我在一个表中有一个列,它可能包含空值或空值。我如何检查一个列是否为空或空的行中存在的表?
(e.g. null or '' or ' ' or ' ' and ...)
我在一个表中有一个列,它可能包含空值或空值。我如何检查一个列是否为空或空的行中存在的表?
(e.g. null or '' or ' ' or ' ' and ...)
当前回答
try
SELECT 0 IS NULL , '' IS NULL , NULL IS NULL
-> 0, 0, 1
or
SELECT ISNULL(' ') , ISNULL( NULL )
-> 0 ,1
参考
其他回答
检查空值
$column is null
isnull($column)
检查是否为空
$column != ""
但是,你应该总是为列设置NOT NULL, mysql优化只能处理一个IS NULL级别
try
SELECT 0 IS NULL , '' IS NULL , NULL IS NULL
-> 0, 0, 1
or
SELECT ISNULL(' ') , ISNULL( NULL )
-> 0 ,1
参考
下面的SQL查询工作正常。
SELECT * FROM <table-name> WHERE <column-name> IS NULL;
根据SQL-92标准的定义,当比较两个宽度不同的字符串时,较窄的值用空格右填充,使其与较宽的值宽度相同。因此,所有完全由空格(包括零空格)组成的字符串值将被认为是相等的。
'' = ' ' IS TRUE
'' = ' ' IS TRUE
' ' = ' ' IS TRUE
' ' = ' ' IS TRUE
etc
因此,不管some_col值有多少个空格,这都应该有效:
SELECT *
FROM T
WHERE some_col IS NULL
OR some_col = ' ';
或者更简洁地说:
SELECT *
FROM T
WHERE NULLIF(some_col, ' ') IS NULL;
这句话对我来说更清晰更易读:
select * from my_table where ISNULL(NULLIF(some_col, ''));