如何在MySQL中选择非空列?

13

对不起,如果这个问题已经被问过了,但我一直在搜索却找不到解决我的简单问题的方法。

我需要选择所有包含文本(字母、数字或特殊字符)的 varchar 列所在的行,因此我编写了以下查询:

SELECT col1
FROM table
WHERE col1 IS NOT NULL

但是这会返回包含值“”(即它为空白,但未设置为NULL,因此仍会被返回)的列。

我尝试将查询更改为:

SELECT col1
FROM table
WHERE col1 IS NOT NULL
AND col1 != ''

但是那行不起作用。

我该如何阻止返回空白列的行?

3个回答

26

如果你的列中似乎存在空格,则使用 TRIM

SELECT col1
FROM table
WHERE col1 IS NOT NULL
AND TRIM(col1) <> ''

1
使用LENGTH
SELECT col1
FROM table
WHERE LENGTH(col1) > 0

1

如果列为空但未设置为NULL,可以使用此查询

SELECT col1 FROM table WHERE col1 NOT LIKE ''; # 两个不带空格的单引号

或者

如果列中有一个或多个空格,可以使用此查询

SELECT col1 FROM table where col1 not like '% %';

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接