我认为这样会起作用:
SELECT column_name from table_name WHERE column_name NOT LIKE '%_%';
但是这对于空值不起作用。
当然,我可以添加
OR column_name IS NULL
它可以工作,但我想找一种只使用一个测试的方法。
SELECT column_name from table_name WHERE column_name NOT LIKE '%_%';
但是这对于空值不起作用。
当然,我可以添加
OR column_name IS NULL
它可以工作,但我想找一种只使用一个测试的方法。
从功能上来说,你应该能够使用
SELECT column_name
FROM table_name
WHERE TRIM(column_name) IS NULL
问题在于,对于COLUMN_NAME的索引将不会被使用。如果这是一个具有选择性条件的情况,则需要在TRIM(column_name)上创建基于函数的索引。SELECT column_name from table_name
WHERE RTRIM(ISNULL(column_name, '')) LIKE ''
ISNULL(column_name, '')
会在column_name为NULL时返回'',否则返回column_name。
更新
在Oracle中,您可以使用NVL
来实现相同的结果。
SELECT column_name from table_name
WHERE RTRIM(NVL(column_name, '')) LIKE ''
WHERE RTRIM(ISNULL(column_name, '')) LIKE ''
。 - Serj SaganNULLIF函数将把任何只含有空格的列值转换为NULL值。适用于T-SQL和SQL Server 2008及以上版本。
SELECT [column_name]
FROM [table_name]
WHERE NULLIF([column_name], '') IS NULL
在检查列的null或Empty
值时,我注意到各种数据库存在一些支持问题。
并非每个数据库都支持TRIM
方法。
以下是矩阵,以了解不同数据库支持的方法。
SQL中的TRIM函数用于从字符串中删除指定的前缀或后缀。最常见的模式是删除空格。这个函数在不同的数据库中被称为不同的名称:
TRIM(),RTRIM(),LTRIM()
RTRIM(),LTRIM()
TRIM(),RTRIM(),LTRIM()
如何检查Empty/Null/Whitespace:-
根据不同的数据库,以下是两种不同的方法-
这些trim函数的语法是:
使用Trim检查-
SELECT FirstName FROM UserDetails WHERE TRIM(LastName) IS NULL
使用LTRIM和RTRIM进行检查-
SELECT FirstName FROM UserDetails WHERE LTRIM(RTRIM(LastName)) IS NULL
以上两种方法提供相同的结果,只需根据您的数据库支持使用即可。它只是从UserDetails
表中返回FirstName
,如果它有一个空的LastName
希望这也能帮助其他人 :)
这个 phpMyAdmin 查询返回的是那些不是 null、空或只包含空格的行:
SELECT * FROM `table_name` WHERE NOT ((`column_name` IS NULL) OR (TRIM(`column_name`) LIKE ''))
如果你想选择空/空白/仅有空格的行,只需删除 NOT。
SELECT column_name FROM table_name where isnull(column_name,'') <> ''
虽然 @MerrickPlainview 的答案看起来很接近和简短,但完整的答案(也要处理OP所要求的空格)应该是这样的:
SELECT column_name FROM table_name WHERE NULLIF(TRIM(column_name), '') IS NOT NULL
在 T-SQL 中,我使用的是 IsNotNullOrEmptyOrWhiteSpace
。
SELECT [column_name] FROM [table_name]
WHERE LEN(RTRIM(ISNULL([column_name], ''))) > 0
这涵盖了空值和空格
TRIM(ColumnName) <> ''
你也可以检查一下这个。当你想获取空值和另一个条件(即)我的查询应该返回列名为空并且应该有单词“questiontext”的行时,这对我很有效。
SELECT *
FROM `table_name`
WHERE (('columnname' IS NULL) OR (TRIM('columnname') LIKE 'questiontext'))
在这里,我的'columnname'应该等于'questiontext'。