如何使用null值更新列

时间:2010-10-06 08:08:30

标签: mysql sql-update

我使用的是mysql,需要使用null值更新列。我尝试了很多不同的方法,而且我得到的最好的是一个空字符串。

是否有特殊的语法来执行此操作?

13 个答案:

答案 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;
        }
    }