網頁

2011年7月13日 星期三

SQL 語法如何將多欄位查詢結果合併成一個字串

不常用的東西,果然會忘記,今天剛好有人問起如何將多欄位查詢結果合併成一個字串,努力回想下,想起來了,果然可以,順便做一下紀錄,當作備忘。


測試資料:
Table: usrdata
Field: id, firstname, lastname
Data: 0,'Java','Sun' ; 1, 'java','oracle'

Oracle Database:
SQL> SELECT firstname||lastname FROM USRDATA;
firstname||lastname
-----------------------------
JavaSun
javaoracle

看起來在Oracle環境下是可行的。朋友使用的資料庫為PostgreSQL,驗證也是可行的。

本來事情已解決,但是空閒下來時,就想說MySQL也來試試看,結果....失敗了...
mysql> select firstname||lastname from usrdata;
firstname||lastname
---------------------
0
0

查了一下MySQL手冊(http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat)
mysql> select concat(firstname, lastname) from usrdata;
concat(firstname, lastname)
-----------------------------
JavaSun
javaoracle

嘿嘿,解決了,繼續來驗證微軟的資料庫(SQL Server, access),沒記錯的話,關鍵字是(&)
select firstname & lastname from usrdata;
firstname & lastname
-----------------------------
JavaSun
javaoracle

總結:
每個資料庫在執行SQL語法時,字串連結的處理都不太一樣。
Oracle和PostgreSQL使用符號(||)。
MySQL使用CONCAT(col1, col2, ...)。
SQL Server使用符號(&)。

沒有留言:

張貼留言