字符串的拼接
1,Mysql
在Java、C#等編程語言中字符串的拼接可以通過加號“+”來實現,比如:"1"+"3"、"a"+"b"。
在MYSQL中也可以使用加號“+”來連接兩個字符串,比如下面的SQL:
- SELECT '12'+'33',FAge+'1' FROM T_Employee
執行結果
- '12'+'33' FAge+'1'
- 45 26
- 45 29
- 45 24
- 45 26
- 45 29
- 45 28
- 45 24
- 45 29
- 45 23
MYSQL會嘗試將加號兩端的字段值嘗試轉換為數字類型,如果轉換失敗則認為字段值為
0,比如我們執行下面的SQL語句:
- SELECT 'abc'+'123',FAge+'a' FROM T_Employee
執行完畢我們就能在輸出結果中看到下面的執行結果:
- 'abc'+'123' FAge+'a'
- 123 25
- 123 28
- 123 23
- 123 25
- 123 28
- 123 27
- 123 23
- 123 28
- 123 22
在MYSQL中進行字符串的拼接要使用CONCAT函數,CONCAT函數支持一個或者多個參數,
參數類型可以為字符串類型也可以是非字符串類型,對於非字符串類型的參數MYSQL將嘗試
將其轉化為字符串類型,CONCAT函數會將所有參數按照參數的順序拼接成一個字符串做為
返回值。比如下面的SQL語句用於將用戶的多個字段信息以一個計算字段的形式查詢出來:
- SELECT CONCAT('工號為:',FNumber,'的員工的幸福指數:',FSalary/(FAge-21))
FROM T_Employee 執行完畢我們就能在輸出結果中看到下面的執行結果:
- CONCAT('工號為:',FNumber,'的員工的幸福指數:',FSalary/(FAge-21))
- 工號為:DEV001的員工的幸福指數:2075.000000
- 工號為:DEV002的員工的幸福指數:328.685714
- 工號為:HR001的員工的幸福指數:1100.440000
MYSQL中還提供了另外一個進行字符串拼接的函數CONCAT_WS,
CONCAT_WS可以在待拼接的字符串之間加入指定的分隔符,它的第一個參數值為采用的分
隔符,而剩下的參數則為待拼接的字符串值,比如執行下面的SQL:
- SELECT CONCAT_WS(',',FNumber,FAge,FDepartment,FSalary) FROM T_Employee
執行完畢我們就能在輸出結果中看到下面的執行結果:
- CONCAT_WS(',',FNumber,FAge,FDepartment,FSalary)
- DEV001,25,Development,8300.00
- DEV002,28,Development,2300.80
- HR001,23,HumanResource,2200.88
- HR002,25,HumanResource,5200.36
- IT001,28,InfoTech,3900.00
- IT002,27,InfoTech,2800.00
- SALES001,23,Sales,5000.00
- SALES002,28,Sales,6200.00
- SALES003,22,Sales,1200.00
2,oracle
Oracle中使用“||”進行字符串拼接,其使用方式和MSSQLServer中的加號“+”一樣。
比如執行下面的SQL語句:
- SELECT '工號為'||FNumber||'的員工姓名為'||FName FROM T_Employee
- WHERE FName IS NOT NULL
執行完畢我們就能在輸出結果中看到下面的執行結果:
- 工號為||FNUMBER||的員工姓名為||FNAME
- 工號為DEV001的員工姓名為Tom
- 工號為DEV002的員工姓名為Jerry
- 工號為SALES001的員工姓名為John
- 工號為SALES002的員工姓名為Kerry
- 工號為SALES003的員工姓名為Stone
- 工號為HR001的員工姓名為Jane
- 工號為HR002的員工姓名為Tina
- 工號為IT001的員工姓名為Smith
除了“||”,Oracle還支持使用CONCAT()函數進行字符串拼接,比如執行下面的SQL語句:
- SELECT CONCAT('工號:',FNumber) FROM T_Employee
執行完畢我們就能在輸出結果中看到下面的執行結果:
- CONCAT(工號:,FNUMBER)
- 工號:DEV001
- 工號:DEV002
- 工號:HR001
- 工號:HR002
- 工號:IT001
- 工號:IT002
- 工號:SALES001
- 工號:SALES002
- 工號:SALES003
如果CONCAT中連接的值不是字符串,Oracle會嘗試將其轉換為字符串,
與MYSQL的CONCAT()函數不同,Oracle的CONCAT()函數只支持兩個參數,不支持兩個以
上字符串的拼接。如果要進行多個字符串的拼接的話,可以使用多個CONCAT()函數嵌套使用。
- SELECT CONCAT(CONCAT(CONCAT('工號為',FNumber),'的員工姓名為'),FName) FROM
- T_Employee
- WHERE FName IS NOT NULL
執行完畢我們就能在輸出結果中看到下面的執行結果:
- CONCAT(CONCAT(CONCAT(工號為,FNUMBER),的員工姓名為),FNAME)
- 工號為DEV001的員工姓名為Tom
- 工號為DEV002的員工姓名為Jerry
- 工號為SALES001的員工姓名為John
- 工號為SALES002的員工姓名為Kerry
- 工號為SALES003的員工姓名為Stone
- 工號為HR001的員工姓名為Jane
- 工號為HR002的員工姓名為Tina
- 工號為IT001的員工姓名為Smith