检查字段是否为空

Efo*_*fox 12 mysql

如果我想检查字段是否包含除null和空之外的其他字符,那么查询是否正确?

select CASE WHEN description IS NULL THEN 'null'
  WHEN description IS NOT NULL THEN 'not null' ELSE 'something else' END 
  AS 'description'from milestone where name like '%Test%' or name like '%test%';

+-------------+
| description |
+-------------+
| not null    |
+-------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

Ric*_*iwi 20

空和空意味着NULL +''(空字符串)?

select CASE WHEN description IS NULL or description = '' THEN 'null or empty'
  ELSE 'not null' END 
  AS 'description'
Run Code Online (Sandbox Code Playgroud)

在您的原始查询中,不存在第三种情况,因为IS NULL和IS NOT NULL是互补的,它们之间已经涵盖了所有可能性.

此外,除非您使用区分大小写的排序规则(非常罕见,除非您特别提名,否则永远不会默认排序),MySQL不是Oracle - 这两个查询的工作方式相同:

where name like '%Test%' or name like '%test%'
where name like '%test%'
Run Code Online (Sandbox Code Playgroud)

因为MySQL会不区分大小写匹配字符串


Sli*_*liq 14

简单IF解决方案:

IF (my_field = '', "not null", "null")
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我个人喜欢这样使用它(简写语法):

IF (my_field = '', 1, 0)
Run Code Online (Sandbox Code Playgroud)