環(huán)球在線開(kāi)戶——SKSKFC
Mysql中的concat函數(shù)(拼接函數(shù))
概述
很多時(shí)候,我們需要將不同地方獲得的字符串拼接在一起,此時(shí)就需要使用CONCAT
和CONCAT_WS
函數(shù)
要連接兩個(gè)或多個(gè)引用的字符串值,請(qǐng)將字符串放在一起,如下所示:
mysql>
SELECT
'MySQL '
'String '
'Concatenation'
;
+
----------------------------+
| MySQL????????????????????? |
+
----------------------------+
| MySQL String Concatenation |
+
----------------------------+
1 row
in
set
除了使用空格進(jìn)行字符串連接之外,mysql還提供了兩個(gè)連接字符串值的函數(shù)CONCAT
和CONCAT_WS
Mysql Concat函數(shù)
Mysql?Concat
函數(shù)需要一個(gè)或多個(gè)字符串參數(shù),并將他們連接成一個(gè)字符串。CONCAT()
?函數(shù)需要至少一個(gè)參數(shù),否則會(huì)引起報(bào)錯(cuò)。
CONCAT(string1,string2, ... );
CONCAT()函數(shù)在連接之前將所有參數(shù)轉(zhuǎn)換為字符串類(lèi)型。如果任何參數(shù)為NULL
,則CONCAT()
函數(shù)返回NULL
值。
mysql>
SELECT
CONCAT(
'MySQL'
,
'CONCAT'
);
+
--------------------------+
| CONCAT(
'MySQL'
,
'CONCAT'
) |
+
--------------------------+
| MySQLCONCAT????????????? |
+
--------------------------+
1 row
in
set
如果是添加NULL
值,則CONCAT
函數(shù)將會(huì)返回一個(gè)NULL
值;
mysql>
SELECT
CONCAT(
'MySQL'
,
NULL
,
'CONCAT'
);
+
-------------------------------+
| CONCAT(
'MySQL'
,
NULL
,
'CONCAT'
) |
+
-------------------------------+
|
NULL
????????????????????????? |
+
-------------------------------+
1 row
in
set
Mysql Concat_Ws函數(shù)
MySQL提供了一種特殊形式的CONCAT()
函數(shù):CONCAT_WS()
函數(shù)。CONCAT_WS()
函數(shù)將兩個(gè)或多個(gè)字符串值與預(yù)定義的分隔符相連接。
下面說(shuō)明了CONCAT_WS()
函數(shù)的語(yǔ)法:
CONCAT_WS(seperator,string1,string2, ... );
第一個(gè)參數(shù)是其他參數(shù):string1
,string2
,...
的分隔符。
CONCAT_WS
函數(shù)在字符串參數(shù)之間添加分隔符,并返回單個(gè)字符串,并在字符串參數(shù)之間插入分隔符。
以下語(yǔ)句連接兩個(gè)字符串值:Max
和Su
,并用逗號(hào)分隔這兩個(gè)字符串:
SELECT
CONCAT_WS(
','
,
'Max'
,
'Su'
);
SQL
執(zhí)行上面查詢語(yǔ)句,得到以下結(jié)果 -
mysql>
SELECT
CONCAT_WS(
','
,
'Max'
,
'Su'
);
+
---------------------------+
| CONCAT_WS(
','
,
'Max'
,
'Su'
) |
+
---------------------------+
|
Max
,Su??????????????????? |
+
---------------------------+
1 row
in
set
Shell
當(dāng)且僅當(dāng)作為分隔符的第一個(gè)參數(shù)為NULL
時(shí),CONCAT_WS
函數(shù)才返回NULL
。
mysql>
SELECT
CONCAT_WS(
NULL
,
'Jonathan'
,
'Minsu'
);
+
--------------------------------------+
| CONCAT_WS(
NULL
,
'Jonathan'
,
'Minsu'
) |
+
--------------------------------------+
|
NULL
???????????????????????????????? |
+
--------------------------------------+
1 row
in
set
與CONCAT
函數(shù)不同,CONCAT_WS
函數(shù)在分隔符參數(shù)之后跳過(guò)NULL
值。 換句話說(shuō),它忽略NULL
值
mysql>
SELECT
CONCAT_WS(
','
,
'Jonathan'
,
'Minsu'
,
NULL
);
+
-----------------------------------------+
| CONCAT_WS(
','
,
'Jonathan'
,
'Minsu'
,
NULL
) |
+
-----------------------------------------+
| Jonathan,Minsu????????????????????????? |
+
-----------------------------------------+
1 row
in
set
以下語(yǔ)句使用CONCAT_WS
函數(shù)構(gòu)造完整的地址:
SELECT
????
CONCAT_WS(
CHAR
(13),
????????????
CONCAT_WS(
' '
, contactLastname, contactFirstname),
????????????
addressLine1,
????????????
addressLine2,
????????????
CONCAT_WS(
' '
, postalCode, city),
????????????
country,
????????????
CONCAT_WS(
CHAR
(13),
''
))
AS
Customer_Address
FROM
????
customers;
SQL
執(zhí)行上面查詢語(yǔ)句,得到以下結(jié)果 -
+----------------------------------------------------------------------------------+
| Customer_Address ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
+----------------------------------------------------------------------------------+
| Schmitt Carine?
54, rue Royale
44000 Nantes
France |
************ 此處省略一大波數(shù)據(jù) *******