concat函数
MySQL的concat函数可以连接一个或者多个字符串,如果有任何一个值为null,那么最终的结果为null
mysql> SELECT CONCAT('my', 's', 'ql');
-> 'mysql'
mysql> SELECT CONCAT('my', NULL, 'ql');
-> NULL
mysql> SELECT CONCAT(14.3);
-> '14.3'
concat_ws函数
concat_ws函数如果任意一个值为null,则直接忽略这个值,还会输出不为null的字符串。
如连接后以'-'分隔
mysql> SELECT CONCAT_WS('-','First name','Second name','Last Name');
-> 'First name-Second name-Last Name'
mysql> SELECT CONCAT_WS('-','First name',NULL,'Last Name');
-> 'First name-Last Name'
mysql CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。
如果想要忽略空字符串可以这样写,使用case when 判断一下是否为空,为空则设置为null,然后在利用CONCAT_WS的特性判断为null就不拼接了
mysql> SELECT CONCAT_WS('-',stringa,(case when stringb= '' then NULL else stringb end))