深入講解SQL中的字串拼接

2022-09-26 13:00:37 字數 2035 閱讀 4662

一、概述

相信大家在日常開發中,在sql語句中經常需要進行字串拼接,以sqlserver,oracle,mysql三種資料庫為例,因為這三種資料庫具有代表性。

sqlserver:

select '123'+'456';

oracle:

select '123'||'456' from dual;

或select concat('123','456') from dual;

mysql:

select concat('123','456');

注意:sql server中沒有concat函式(sql server 2012已新增concat函式)。oracle和mysql中雖然都有co程式設計客棧ncat,但是oracle中只能拼接2個字串,所以建議用||的方式;mysql中的concat則可以拼接多個字串。

在sql server中的「+」號除了能夠進行字串拼接外,還可以進行數字運算,程式設計客棧在進行字串拼接時要小心使用。下面以「users」表為例,進行詳細分析:

二、數字 + 字串

2.1 int + varchar

select id + place from users where id = 1; //提示錯誤「在將 varchar 值 'bzz' 轉換成資料型別 int 時失敗」

select id + place from users where id = 5; //提示錯誤「在將 varchar 值 '102.34' 轉換成資料型別 int 時失敗」

select id + place from users where id = 4; //返回int 「105」

2.2 decimal + varchar

select *, id + cost from users where id = 4 or id = 5; //返回decimal 「102.98」和「104.30」

select *, place + cost from users where id = 1; //提示錯誤「從資料型別 varchar 轉換為 numeric 時出錯。」

由此可見,系統會將字串varchar型別轉化為int,若不能轉換則提示錯誤,轉換成功則進行數字計算。

三、數字 + 數字

數字指的是int、decimal等型別。數字 +  數字,wysvojf則進行數字相加,若某字段為null,則計算結果為null。

select *, uage + cost as 'uage + cost' from users

四、字串 + 字串

字串 + 字串,則直接進行拼接。若某字段為null,則計算結果為null。

select *, uname + place as 'uname + place' from users

五、使用cast和convert函式進行型別轉換

通過上述例項,可以看出若要使用「+」進行字串拼接或數字計算,最穩妥的方法是進行型別轉換。

要求:將「678」轉化為數值型資料,並與123相加進行數**算。

select cast('678' as int) + 123;

select convert(int, '678') + 123;

要求:id列和place列進行字串拼接。

select * convert(varchar(10), id) + place from use程式設計客棧rs;

字串拼接後的字串不能簡單作為「篩選字段」

有時,需要列a = 變數1,列b = 變數2的篩選,為了簡化sql語句 列a + 列b = 變數1 + 變數2。這種方法並不完全準確

select * from users where uname + place = 'aabzz';

select * from users where uname = 'aa' and place = 'bzz';

為了防止上述情況的發生,可以再列a和列b之間加上乙個較特殊的字串。

select * from users where uname + 'rain@&%$man' + place = 'aa' + 'rain@&%$man' + 'bzz'

總結

SQL 拼接字串

寫sql的時候有時候用到需要拼接多個字段或者在查詢出結果的字段裡加入一部分固定的字串。方法一 在查詢到的結果後,用 去拼接。這種方法就不在贅述。方法二 使用資料庫提供的方法concat a,b oracle 中concat a,b 只能有兩個引數,如果concat中連線的值不是字串,那麼oracle...

sql字串拼接

oracle 使用 或者concat sql select aaa bbb from dual aaa bbb aaabbb sql select concat aaa ccc from dual concat aaa aaaccc mysql中,使用 如果字串全是數字則轉化為數字,否則轉換為0,也...

sql字串拼接

在sql語句中經常需要進行字串拼接,以sqlserver,oracle,mysql三種資料庫為例,因為這三種資料庫具有代表性。sqlserver select 123 456 oracle select 123 456 from dual 或select concat 123 456 from du...