在sql語句中經常需要進行字串拼接,以sqlserver,oracle,mysql三種資料庫為例,因為這三種資料庫具有代表性。
sqlserver:
select '123'+'456';oracle:
select '123'||'456' from dual;mysql:或select concat('123','456') from dual;
select concat('123','456');注意:sql server中沒有concat函式(sql server 2012已新增concat函式)。oracle和mysql中雖然都有concat,但是oracle中只能拼接2個字串,所以建議用||的方式;mysql中的concat則可以拼接多個字串。
在sql server中的「+」號除了能夠進行字串拼接外,還可以進行數字運算,在進行字串拼接時要小心使用。下面以「users」表為例,進行詳細分析:
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等型別。數字 + 數字,則進行數字相加,若某字段為null,則計算結果為null。
字串 + 字串,則直接進行拼接。若某字段為null,則計算結果為null。
通過上述例項,可以看出若要使用「+」進行字串拼接或數字計算,最穩妥的方法是進行型別轉換。
要求:將「678」轉化為數值型資料,並與123相加進行數**算。
select cast('678' as int) + 123;要求:id列和place列進行字串拼接。select convert(int, '678') + 123;
select *, convert(varchar(10), id) + place from users;字串拼接後的字串不能簡單作為「篩選字段」
有時,需要列a = 變數1,列b = 變數2的篩選,為了簡化sql語句 列a + 列b = 變數1 + 變數2。這種方法並不完全準確
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字串拼接
不同資料庫連線字串的方法不完全相同 一 mysql字串拼接 1 concat函式 語法格式 concat char c1,char c2,char cn 其中char代表字串,定長與不定長均可以 1.1 連線兩個字串 1.2 連線多個字串 2 操作符 2.1 連線兩個字串 2.2 連線多個字串 3 ...