1. 程式人生 > >mysql中CONCAT()的用法

mysql中CONCAT()的用法

先講講在工作上的一個用法。

生產上,使用者晒單後,其中一個表中一個欄位沒有維護,打算手動用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)。