先讲讲在工作上的一个用法。
生产上,用户晒单后,其中一个表中一个字段没有维护,打算手动用sql把线上一个月的数据维护一下。
用到了concat()函数,拼接生成update语句:
SELECT CONCAT('update gshop_order_product set isSun=1 where id=',order_product_id,';') FROM gshop_comments WHERE object_type IN(2,3) AND display IN (-2,-1,1) AND time >=UNIX_TIMESTAMP() - 30 * 86400
这样,就会拼接生产需要执行的update语句,找运维运行,就完成了工作。
那就来讲讲concat函数:
使用方法:CONCAT(str1,str2,…)
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。
如果所有参数均为非二进制字符串,则结果为非二进制字符串。
如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。
一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如:
SELECT CONCAT(CAST(int_xxx AS CHAR), char_col)
MySQL的concat函数可以连接一个或者多个字符串,如
mysql> SELECT CONCAT('my', 's', 'ql');
-> 'mysql'
mysql> SELECT CONCAT('my', NULL, 'ql');
-> NULL
mysql> SELECT CONCAT(14.3);
-> '14.3'
延伸:讲讲MySQL中concat_ws函数
使用方法:CONCAT_WS(separator,str1,str2,...)
CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。
注意:
如果分隔符为 NULL,则结果为 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)。
原文:https://blog.csdn.net/zouxucong/article/details/79473254