如何在mysql中捕获空值?

4smxwvx5  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(359)

我有一张这样的table

  1. Table : test
  2. column1 | column2
  3. aaaaaa | 113323
  4. (NULL) | 2331233
  5. 2 | 899999
  6. 99999 | 222222
  7. abc | 13123
  8. jul | 98282

我试图找出第1列中单词长度小于4的地方,所以我使用了这个查询。

  1. select * from test where length(column1) < '4'

我只知道:

  1. column1 | column2
  2. abc | 13123
  3. jul | 98282
  4. 2 | 899999

为什么我的查询没有捕获空值?我的问题有问题吗?我所期望的是这样

  1. column1 | column2
  2. (NULL) | 2331233
  3. abc | 13123
  4. jul | 98282
  5. 2 | 899999

我有另一种解决方法,比如 where column1 is null 但这对我没用

fcwjkofz

fcwjkofz1#

你也可以用 COALESCE 此处替换 NULL 使用空字符串,然后进行长度比较:

  1. SELECT *
  2. FROM test
  3. WHERE LENGTH(COALESCE(column1, '')) > 4;
ngynwnxp

ngynwnxp2#

NULL 不是字符串,因此无法比较 length 去吧。
尝试:

  1. select * from test where length(column1) < '4' or column1 is NULL;

所以如果这个值 (NULL) 确实是空的,它将得到匹配,但如果它是一些奇怪的/修改过的版本,而不是一个真正的mysql NULL ,它将不匹配

相关问题