如何检查列中是否为空或空的MySQL

我有一个表中的列可能包含空值或空值。 如何检查表中存在的行是否为空或为空。

(eg null or '' or ' ' or ' ' and ...) 

这将selectsome_colNULL'' (空string)

 SELECT * FROM table WHERE some_col IS NULL OR some_col = ''; 

正如SQL-92标准所定义的那样,当比较两个不同宽度的string时,较窄的值用空格填充以使宽度与宽度值相同。 因此,完全由空格(包括零空格)组成的所有string值将被视为相等

 '' = ' ' IS TRUE '' = ' ' IS TRUE ' ' = ' ' IS TRUE ' ' = ' ' IS TRUE etc 

因此,无论有多less个空间组成some_col值,这都应该起作用:

 SELECT * FROM T WHERE some_col IS NULL OR some_col = ' '; 

或者更简洁:

 SELECT * FROM T WHERE NULLIF(some_col, ' ') IS NULL; 

编写条件的更简短的方法是:

 WHERE some_col > '' 

由于null > ''产生unknown ,所以这具有过滤掉null和空string的效果。

您可以使用WHERE col IS NULLWHERE col IS NOT NULL来testing列是否为空或WHERE col IS NOT NULL例如

 SELECT myCol FROM MyTable WHERE MyCol IS NULL 

在你的例子中你有各种各样的空白的排列。 您可以使用TRIM空白区域,并且可以使用COALESCE来默认NULL值(COALESCE将从您所供应的值中返回第一个非空值。

例如

 SELECT myCol FROM MyTable WHERE TRIM(COALESCE(MyCol, '') = '' 

这个最后的查询将返回MyCol为null的行或任何长度的空白。

如果你可以避免它,最好不要在WHERE子句的列上有一个函数,因为它使得使用索引很困难。 如果你只是想检查一个列是空的还是空的,那么你最好这样做:

 SELECT myCol FROM MyTable WHERE MyCol IS NULL OR MyCol = '' 

有关更多信息,请参阅TRIM COALESCE和IS NULL 。

还处理来自MySQL文档的空值

没有WHERE的另一种方法,试试这个..

将select空值和空值

 SELECT ISNULL(NULLIF(fieldname,'')) FROM tablename 

我讨厌我的数据库中凌乱的字段。 如果列可能是一个空白string或null,我宁愿在每次做select之前解决这个问题,就像这样:

 UPDATE MyTable SET MyColumn=NULL WHERE MyColumn=''; SELECT * FROM MyTable WHERE MyColumn IS NULL 

这样可以保持数据整洁,只要你没有特别的需要区分NULL和空的出于某种原因。

尝试

 SELECT 0 IS NULL , '' IS NULL , NULL IS NULL -> 0, 0, 1 

要么

 SELECT ISNULL(' ') , ISNULL( NULL ) -> 0 ,1 

参考

如果要在执行ORDER BY时最后显示NULL值,请尝试以下操作:

 SELECT * FROM my_table WHERE NULLIF(some_col, '') IS NULL; 

这个说法对我来说更清晰,更易读:

 select * from my_table where ISNULL(NULLIF(some_col, '')); 

当在我的项目中检查列的null or Emptynull or Empty值时,我注意到在各种数据库中有一些支持问题。

每个数据库不支持 TRIM 方法。

以下是matrix,以了解不同数据库支持的方法。

SQL中的TRIM函数用于从string中删除指定的前缀或后缀。 最常见的模式是白色空间。 这个函数在不同的数据库中调用的方式不同

  • MySQL: TRIM(), RTRIM(), LTRIM()
  • Oracle: RTRIM(), LTRIM()
  • SQL Server: RTRIM(), LTRIM()

如何检查空/空: –

以下是根据不同数据库的两种不同的方式 –

这些修剪function的语法是:

  1. 使用修剪来检查 –

    SELECT FirstName FROM UserDetails WHERE TRIM(LastName) IS NULL

  2. 使用LTRIM&RTRIM进行检查,

    SELECT FirstName FROM UserDetails WHERE LTRIM(RTRIM(LastName)) IS NULL

以上两种方式提供相同的结果只是基于您的数据库支持使用。 它只是从UserDetails表返回FirstName ,如果它有一个空的LastName

希望这会帮助你:)

检查null

 $column is null isnull($column) 

检查空的

 $column != "" 

但是,您应该始终为列设置NOT NULL,
mysql优化只能处理一个IS NULL级别

 SELECT IF(field1 IS NULL or field1 = '', 'empty', field1) as field1 from tablename 

要么

 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 LIKE '' 

反过来

 SELECT * FROM table WHERE column_name NOT LIKE '' 

如果数据types是string而行是空的,试试这个

 SELECT * FROM table WHERE column_name IS NULL OR column_name = '' 

如果数据types是int或列是0,那么试试这个

 SELECT * FROM table WHERE column_name > = 0