我有这样的桌子
Table : test
column1 | column2
aaaaaa | 113323
(NULL) | 2331233
2 | 899999
99999 | 222222
abc | 13123
jul | 98282
Run Code Online (Sandbox Code Playgroud)
我试图找到 column1 中单词长度小于 4 的位置,所以我使用了这个查询。
select * from test where length(column1) < '4'
Run Code Online (Sandbox Code Playgroud)
我只得到这个:
column1 | column2
abc | 13123
jul | 98282
2 | 899999
Run Code Online (Sandbox Code Playgroud)
为什么我的查询没有捕获 NULL 值?我的查询有问题吗?我期望的是这样的
column1 | column2
(NULL) | 2331233
abc | 13123
jul | 98282
2 | 899999
Run Code Online (Sandbox Code Playgroud)
我有另一个解决方案,如使用where column1 is null但它不起作用
NULL不是字符串,因此您无法与length它进行比较。
尝试:
select * from test where length(column1) < '4' or column1 is NULL;
Run Code Online (Sandbox Code Playgroud)
因此,如果该值(NULL)确实为空,它将被匹配,但如果它是一些奇怪/修改的版本而不是真正的 MySql NULL,它将不会被匹配
您还可以使用COALESCE此处替换NULL为空字符串,然后进行长度比较:
SELECT *
FROM test
WHERE LENGTH(COALESCE(column1, '')) > 4;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |