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


測試資料:
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使用符號(&)。

,

mark528 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • Parts
  • 沒記錯的話...
    CONCAT(col1, col2, ...)是標準SQL語法,在所有DB中都能使用
    至於Oracle 的 || 和MSSQL的 & 則是各別 DB 專屬的用法
【 X 關閉 】

【PIXNET 痞客邦】國外旅遊調查
您是我們挑選到的讀者!

填完問卷將有機會獲得心動好禮哦(注意:關閉此視窗將不再出現)

立即填寫取消