web-dev-qa-db-ja.com

NULL値で列を更新する方法

私はmysqlを使用していて、null値でカラムを更新する必要があります。私はこれまでさまざまな方法を試してみましたが、得られた最良のものは空の文字列です。

これを行うための特別な構文はありますか?

127
jim

特別な構文はありません。

CREATE TABLE your_table (some_id int, your_column varchar(100));

INSERT INTO your_table VALUES (1, 'Hello');

UPDATE your_table
SET    your_column = NULL
WHERE  some_id = 1;

SELECT * FROM your_table WHERE your_column IS NULL;
+---------+-------------+
| some_id | your_column |
+---------+-------------+
|       1 | NULL        |
+---------+-------------+
1 row in set (0.00 sec)
196
Daniel Vassallo

NULLはSQLの特別な値です。 プロパティをnullにするには、次のようにします。

UPDATE table SET column = NULL;
36
Gumbo

=の代わりにISを使用してください。これで問題の構文例が解決されます。

UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
9
Krishna Chaitu

列がnullになる可能性があるかどうかを確認してください。あなたはそれを使ってそれをすることができます

mysql> desc my_table;

列をNULLにできない場合、値をNULLに設定すると、キャストされた値になります。

ここでの例

mysql> create table example ( age int not null, name varchar(100) not null );
mysql> insert into example values ( null, "without num" ), ( 2 , null );
mysql> select * from example;
+-----+-------------+
| age | name        |
+-----+-------------+
|   0 | without num |
|   2 |             |
+-----+-------------+
2 rows in set (0.00 sec)

mysql> select * from example where age is null or name is null;
Empty set (0.00 sec)
6
Thiago Mata

同様の問題に直面している人たちのために、私はSET = NULLクエリを「シミュレート」するとき、PHPMyAdminがエラーを投げることを発見しました。それは赤いニシンです。クエリを実行するだけで、すべてうまくいきます。

4
Daniel Dunn

Update queryを使用してNULL値を設定したい場合は、列値をNULL(引用符なし)に設定します。update tablename set columnname = NULL

ただし、mysqlワークベンチ内でフィールド値を直接編集している場合は、(Esc + del)キーストロークを使用して、選択した列にNULL値を挿入します。

1
mayank nigam

=の代わりにisを使用

例:Select * from table_name where column is null

1
Cyber Gangster

上記の回答では、同じことについて多くの方法と繰り返しが提案されています。私が述べたように私は答えを探し続けました質問ですが、ここで見つけることができませんでした。

しかし、上記の質問「列をNULL値で更新する」の反対は、「列内のすべての行をNULLに更新する」ということです。

こんなときは以下の作品

update table_name
set field_name = NULL
where field_name is not NULL;

isis notはmysqlで動作します

1

true nullではなく空文字列のもう1つの考えられる理由は、フィールドがインデックスであるかインデックスの一部であることです。これは私に起こりました。phpMyAdminを使用して、 "Null"チェックボックスをチェックして " - "を押すことでNULLsを許可するように、テーブルのフィールドの構造を編集しました 保存 "ボタン"テーブルの価格設定は正常に変更されました"と表示されていたので、変更が発生したと想定しました - 変更はしませんでした。これらのフィールドをすべてNULLに設定するためにUPDATEを実行した後は、代わりにempty stringsに設定されていました。テーブル構造をもう一度見て、そのフィールドの "Null"列が 'no'に設定されていることを確認しました。そのフィールドが主キーの一部であることに気付いたときです。

1
ReverseEMF

ここでの問題は、引用符が文字列値にリテラルとして入力されていることにあります。以下を使用して、これらの列をNULLに設定できます。

UPDATE table SET col=NULL WHERE length(col)<3;

もちろん最初にこれらの値が実際に ""であることを確認する必要があります。

SELECT DISTINCT(col) FROM table WHERE length(col)<3;
0
Dylan

あなたが従うなら

UPDATE table SET name = NULL

名前が "" NULLでないMYSQLはクエリを意味します

SELECT * FROM table WHERE name = NULLが機能しない、または失望する

0