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

(e.g. null or '' or '  ' or '      ' and ...)

当前回答

我的意见。

在MySQL中,你可以使用COALESCE函数:

返回列表中的第一个非NULL值,如果没有非NULL值,则返回NULL。

所以你可以这样简化你的查询:

SELECT * FROM table WHERE COALESCE(some_col, '') = '';

其他回答

我讨厌数据库中杂乱的字段。如果列可能是一个空白字符串或null,我宁愿在每次执行选择之前修复这个问题,像这样:

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

这可以保持数据整洁,只要您不需要出于某种原因特别区分NULL和empty。

在我的项目中检查一个列的空值或空值时,我注意到在各种数据库中存在一些支持问题。

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

下面是一个矩阵,只是为了了解不同数据库支持的方法。

SQL中的TRIM函数用于从字符串中删除指定的前缀或后缀。最常被删除的模式是空白。这个函数在不同的数据库中调用方式不同:

MySQL:修剪(),r修剪(),LTRIM() 神谕:RTRIM(), LTRIM() SQL服务器:RTRIM(), LTRIM()

如何检查空/空:-

下面是两种不同的方法根据不同的数据库-

这些trim函数的语法如下:

使用Trim检查- SELECT FirstName FROM UserDetails WHERE TRIM(LastName)为空 使用LTRIM和RTRIM检查- SELECT FirstName FROM UserDetails WHERE LTRIM(RTRIM(LastName))为空

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

希望这对你有所帮助:)

这句话对我来说更清晰更易读:

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

在我的例子中,在数据导入期间在列中输入了空格,尽管它看起来像一个空列,但它的长度是1。所以首先我用length(column)检查了空列的长度,然后在此基础上我们可以编写搜索查询

SELECT * FROM table WHERE LENGTH(column)= 0;

SELECT column_name FROM table_name WHERE column_name IN (NULL, '')