如何用空值更新列

我正在使用 mysql,需要更新一个空值列。我已经尝试了很多不同的方法,最好的结果是得到一个空字符串。

有什么特殊的语法吗?

598009 次浏览

NULL是 SQL 中的一个特殊值。 如果要为一个属性赋空,请执行以下操作:

UPDATE table SET column = NULL;

没有特殊的语法:

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)

如果你明白的话

UPDATE table SET name = NULL

那么名称是“”不 NULLINMYSQL 表示您的查询

SELECT * FROM table WHERE name = NULL不起作用或让你自己失望

我怀疑这里的问题是,在字符串值中引号是作为文字输入的。可以使用以下方法将这些列设置为 null:

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

当然,您首先应该检查这些值是否确实是“”,例如:

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

使用 is代替 =

例句: Select * from table_name where column is null

出现空字符串而不是 没错 null 的另一个可能原因是字段是索引或者是索引的一部分。这发生在我身上: 使用 phpMyAdmin,我编辑了一个表中字段的结构,通过选中“ 无效”复选框然后点击“ 保存”按钮来允许 无效。“ 表格定价已成功改变”显示出来了,所以我假设发生了更改——但实际上没有。在执行 更新将所有这些字段设置为 无效之后,它们被设置为 空字符串,因此我再次查看了表结构,发现该字段的“ 无效”列被设置为“ 没有”。那时我才意识到这个领域是 无效0的一部分!

记住查看您的列是否可以为空

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)

对于那些面临类似问题的人,我发现当“模拟”SET = NULL查询时,PHPMyAdmin 会抛出一个错误。这是在转移注意力。.只要运行查询,一切都会好起来。

如果要使用更新查询设置空值,请将列值设置为 NULL (不带引号) 更新表名设置 column nname = NULL

但是,如果您直接编辑 mysql 工作台中的字段值,然后使用(Esc + del)击键将空值插入到选定的列

使用 IS代替 = 这能解决你的问题 例子语法:

UPDATE studentdetails
SET contactnumber = 9098979690
WHERE contactnumber IS NULL;

在以上的回答中,有许多方法和重复建议相同。 我一直在寻找这个问题的答案,但在这里找不到。

用空值更新列的另一种方法 可以是“将列中的所有行更新为空”

在这种情况下作品

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

isis not都可以在 mysql 中工作

如果设置为 NULL 所有记录,请尝试以下操作:

UPDATE `table_name` SET `column_you_want_set_null`= NULL

或者仅仅设置 NULL 特别纪录 use WHERE

UPDATE `table_name` SET `column_you_want_set_null`= NULL WHERE `column_name` = 'column_value'

我们可以使用

$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;
}
}