我在一个表中有一个列,它可能包含空值或空值。我如何检查一个列是否为空或空的行中存在的表?
(e.g. null or '' or ' ' or ' ' and ...)
我在一个表中有一个列,它可能包含空值或空值。我如何检查一个列是否为空或空的行中存在的表?
(e.g. null or '' or ' ' or ' ' and ...)
当前回答
要么
SELECT IF(field1 IS NULL or field1 = '', 'empty', field1) as field1 from tablename
or
SELECT case when field1 IS NULL or field1 = ''
then 'empty'
else field1
end as field1 from tablename
其他回答
SELECT column_name FROM table_name WHERE column_name IN (NULL, '')
如果数据类型为字符串且行为空,请尝试此操作
SELECT * FROM table WHERE column_name IS NULL OR column_name = ''
如果数据类型为int或列为0,则尝试此操作
SELECT * FROM table WHERE column_name > = 0
根据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;
我讨厌数据库中杂乱的字段。如果列可能是一个空白字符串或null,我宁愿在每次执行选择之前修复这个问题,像这样:
UPDATE MyTable SET MyColumn=NULL WHERE MyColumn='';
SELECT * FROM MyTable WHERE MyColumn IS NULL
这可以保持数据整洁,只要您不需要出于某种原因特别区分NULL和empty。
下面的SQL查询工作正常。
SELECT * FROM <table-name> WHERE <column-name> IS NULL;