⽤MySQL的CONCAT()、ISNULL()、IF()拼接查询结
有时需要查询的结果分别在⼏个字段⾥⾯,需要将⼏个字段的内容组合起来
原来⼀直都是先把⼏个字段先查询出来,然后再在 PHP 脚本⾥⾯再⽤⼀个 foreach 将这些字段组合起来
后来想能不能直接在查询语句中把结果组合起来,⽤类似于
SELECT filed1 + field2 AS result FROM t
来直接输出结果,这样就不⽤再循环⼀次,提⾼效率
但是让⼈失望的是 MySQL 只⽀持数字的 + 运算,不⽀持字符串的 + 运算
后来查到⽤ CONCAT() 函数可以实现字符串的组合,那么上⾯的查询就可以写成
SELECT CONCAT(filed1, filed2) AS result FROM t
遇到从⼏个表的⼏个字段⾥查询内容,有时可能有的字段为空,那么要⽤其他的值来代替,这时就可以⽤ IFNULL() 了
⽤法:
IFNULL(expr1, expr2)
如果 expr1 的值不为空,返回 expr1 的值, 如果 expr1 的值为空时,返回 expr2 的值
那么可以写出下⾯的查询了
isnull的用法SELECT id, IFNULL(username, 'noName') AS userName FROM t
意思是如果 username 的值为 null ,查询出来的值就是 noName
但是 IFNULL() 不能处理值为 0 的情况,0 不是 NULL,如果⽤ IFNULL(0, 'zero') 那么得到的结果还是 0,⽽不是 zero,这时就得⽤
IF() 了
⽤法:
IF(expr1, expr2, expr3)
如果 expr1 的值为TRUE(expr1<>0且expr1<>NULL),那么返回 expr2 的值,否则返回 expr3 的值
那么上⾯的例⼦可以写成
SELECT IF(num, 'not zero', 'zero') AS Number FROM t
还有个条件分⽀的 CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END 这⾥就不多写了,参见参考链接

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。