唉,做为小白,我竟然不知道能在WHERE 中用CASE语句!实在丢人。
http://www.itpub.net/thread-1499742-1-2.html
1.在WHERE中可以用CASE语句来实现不同的条件
2.帖子中说可以用TRIM(A)=''来判断A是否是空字符串,做了一下实验。
SQL> select case when trim(a)='' then 'true' else 'false' end from (select ' ' a from dual);
CASEWHENTRIM(A)=''THEN'TRUE'EL
------------------------------
false
SQL> select case when trim(a) IS NULL then 'true' else 'false' end from (select ' ' a from dual);
CASEWHENTRIM(A)ISNULLTHEN'TRUE
------------------------------
true
SQL> select case WHEN a IS NULL then 'true' else 'false' end from (select ' ' a from dual);
CASEWHENAISNULLTHEN'TRUE'ELSE'
------------------------------
false
感觉不是那回事,空字符TRIM()后直接变成NULL了!!!
''其实和NULL是一样的。
SQL> select case when '' is null then 'null' end from dual;
CASEWHEN''ISNULLTHEN'NULL'END
-----------------------------
null
3.把' '插入表中,不会转换成NULL值,即可以保存空字符串。而如果插入''则相当于插入了NULL.
虽然可以在WHERE中用CASE,但是对于这个查询,我觉得还是把CASE用于SELECT后面比较好懂,也是较为常见的写法。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24478467/viewspace-709079/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24478467/viewspace-709079/