我使用的是mysql,需要使用null值更新列。我尝试了很多不同的方法,而且我得到的最好的是一个空字符串。
是否有特殊的语法来执行此操作?
答案 0 :(得分:196)
没有特殊语法:
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)
答案 1 :(得分:36)
NULL
is a special value in SQL.所以要使属性为null,请执行以下操作:
UPDATE table SET column = NULL;
答案 2 :(得分:9)
使用IS
代替=
这将解决您的问题
示例语法:
UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;
答案 3 :(得分:6)
请记住查看您的列是否为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)
答案 4 :(得分:4)
对于那些面临类似问题的人,我发现在模拟' SET = NULL
查询,PHPMyAdmin会抛出错误。它是一个红色的鲱鱼..只需运行查询,一切都会好的。
答案 5 :(得分:1)
使用is
代替=
例如:Select * from table_name where column is null
答案 6 :(得分:1)
空字符串而不是 true null的另一个可能原因是该字段是索引或是索引的一部分。这发生在我身上:使用phpMyAdmin,我通过检查“ Null ”复选框然后点击“ NULL >保存“按钮。 “表格定价已成功更改”显示,所以我认为发生了变化 - 事实并非如此。在执行 UPDATE 将所有这些字段设置为 NULL 后,相反,它们设置为空字符串,所以我看了一下表结构再次显示该字段的“ Null ”列设置为“否”。那时我意识到该字段是主键的一部分!
答案 7 :(得分:1)
如果要使用更新查询设置列值将值设置为NULL(不带引号) update tablename set columnname = NULL
但是,如果您直接编辑mysql workbench中的字段值,则使用(Esc + del)键击将空值插入所选列
答案 8 :(得分:1)
在以上答案中,对于相同的内容,建议了许多方式和重复。 我一直在寻找答案,因为提到的是问题,但在这里找不到。
但与上述问题相反:“使用空值更新列” 可能是“将列中的所有行都更新为空”
在这种情况下,后续工作
update table_name
set field_name = NULL
where field_name is not NULL;
is
以及is not
在mysql中都可以使用
答案 9 :(得分:1)
如果您为所有记录设置NULL ,请尝试以下操作:
UPDATE `table_name` SET `column_you_want_set_null`= NULL
或者仅将NULL 用于特殊记录使用WHERE
UPDATE `table_name` SET `column_you_want_set_null`= NULL WHERE `column_name` = 'column_value'
答案 10 :(得分:0)
如果你按照
UPDATE table SET name = NULL
然后名称是“”not NULL在MYSQL中意味着您的查询
SELECT * FROM table WHERE name = NULL
无法工作或让自己失望
答案 11 :(得分:0)
我怀疑这里的问题是引号是在字符串值中作为文字输入的。您可以使用以下方法将这些列设置为null:
UPDATE table SET col=NULL WHERE length(col)<3;
当然,您应首先检查这些值确实是“”,例如:
SELECT DISTINCT(col) FROM table WHERE length(col)<3;
答案 12 :(得分:0)
在插入时我们可以使用
$arrEntity=$entity->toArray();
foreach ($arrEntity as $key => $value) {
if (trim($entity->$key) == '' && !is_null($entity->$key) && !is_bool($entity->$key)){
unset($entity->$key);
}
}
我们可以使用更新
$fields=array();
foreach ($fields as $key => $value) {
if (trim($value) == '' && !is_null($value) && !is_bool($value)){
$fields[$key] = null;
}
}