帶您深入了解MYSQL字符串連接
MYSQL字符串連接和其他數(shù)據(jù)庫(kù)不太一樣,下面就為您詳細(xì)介紹MYSQL字符串連接的方法,如果您對(duì)此方面感興趣的話不妨一看。
在Java、C#等編程語(yǔ)言中字符串的拼接可以通過(guò)加號(hào)“+”來(lái)實(shí)現(xiàn),比如:"1"+"3"、"a"+"b"。
在MYSQL中也可以使用加號(hào)“+”來(lái)連接兩個(gè)字符串,比如下面的SQL:
SELECT '12'+'33',FAge+'1' FROM T_Employee
仔細(xì)觀察***列,驚訝嗎?這個(gè)列的顯示結(jié)果并不是我們希望的“1233”,而是把“12”
和“33”兩個(gè)字符串當(dāng)成數(shù)字來(lái)求兩個(gè)數(shù)的和了;同樣將一個(gè)數(shù)字與一個(gè)MYSQL字符串用加號(hào)“+”連接也是同樣的效果,比如這里的第二列。
在MYSQL中,當(dāng)用加號(hào)“+”連接兩個(gè)字段(或者多個(gè)字段)的時(shí)候,MYSQL會(huì)嘗試將字段值轉(zhuǎn)換為數(shù)字類型(如果轉(zhuǎn)換失敗則認(rèn)為字段值為0),然后進(jìn)行字段的加法運(yùn)算。因此,當(dāng)計(jì)算的'12'+'33'的時(shí)候,MYSQL會(huì)將“12”和“33”兩個(gè)字符串嘗試轉(zhuǎn)換為數(shù)字類型的12和33,然后計(jì)算12+33的值,這就是為什么我們會(huì)得到45的結(jié)果了。同樣道理,在計(jì)算FAge+'1'的時(shí)候,由于FAge為數(shù)字類型,所以不需要進(jìn)行轉(zhuǎn)換,而'1'為字符串類型,所以MYSQL將'1'嘗試轉(zhuǎn)換為數(shù)字1,然后計(jì)算FAge+1做為計(jì)算列的值。
MYSQL會(huì)嘗試將加號(hào)兩端的字段值嘗試轉(zhuǎn)換為數(shù)字類型,如果轉(zhuǎn)換失敗則認(rèn)為字段值為0,比如我們執(zhí)行下面的SQL語(yǔ)句:
SELECT 'abc'+'123',FAge+'a' FROM T_Employee
在MYSQL中進(jìn)行字符串的拼接要使用CONCAT函數(shù),CONCAT函數(shù)支持一個(gè)或者多個(gè)參數(shù),參數(shù)類型可以為字符串類型也可以是非字符串類型,對(duì)于非字符串類型的參數(shù)MYSQL將嘗試將其轉(zhuǎn)化為字符串類型,CONCAT函數(shù)會(huì)將所有參數(shù)按照參數(shù)的順序拼接成一個(gè)字符串做為返回值。比如下面的SQL語(yǔ)句用于將用戶的多個(gè)字段信息以一個(gè)計(jì)算字段的形式查詢出來(lái):
SELECT CONCAT('工號(hào)為:',FNumber,'的員工的幸福指數(shù):',FSalary/(FAge-21))
FROM T_Employee
CONCAT支持只有一個(gè)參數(shù)的用法,這時(shí)的CONCAT可以看作是一個(gè)將這個(gè)參數(shù)值嘗試轉(zhuǎn)化為字符串類型值的函數(shù)。MYSQL中還提供了另外一個(gè)進(jìn)行字符串拼接的函數(shù)CONCAT_WS,CONCAT_WS可以在待拼接的字符串之間加入指定的分隔符,它的***個(gè)參數(shù)值為采用的分隔符,而剩下的參數(shù)則為待拼接的字符串值,比如執(zhí)行下面的SQL:
SELECT CONCAT_WS(',',FNumber,FAge,FDepartment,FSalary) FROM T_Employee
與MYSQL不同,MSSQLServer中可以直接使用加號(hào)“+”來(lái)拼接字符串。比如執(zhí)行下面的SQL語(yǔ)句:
SELECT '工號(hào)為'+FNumber+'的員工姓名為'+Fname FROM T_Employee
WHERE FName IS NOT NULL
【編輯推薦】