我的表中有一列可能包含null或空值。如何检查表中存在的行中的列是否为空或null?
(e.g. null or '' or ' ' or ' ' and ...)
发布于 2011-12-12 14:54:17
这将选择some_col
为NULL
或''
(空字符串)的所有行
SELECT * FROM table WHERE some_col IS NULL OR some_col = '';
发布于 2011-12-12 20:28:55
根据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;
发布于 2013-07-01 00:24:18
编写条件的一种更短的方法:
WHERE some_col > ''
因为null > ''
会生成unknown
,所以这会过滤掉null
和空字符串。
https://stackoverflow.com/questions/8470813
复制相似问题