1. 程式人生 > >Oracle 如何合併某欄位的值

Oracle 如何合併某欄位的值

一.   前言

今天寫小專案遇到一點問題,是關於想合併某個欄位的問題。通過百度和結合自己的情況,解決了。在這裡寫下來,免得以後忘記還能看看。

二.正文

資料庫表:

--留言資訊物件表
create table t_message(
       m_id int,   --留言資訊的編號
       m_title varchar2(200),  --留言資訊的題目
       m_content clob,         --留言資訊的內容
       m_create_date date,     --留言資訊的建立時間
       u_id int                --客戶的編號
)
--附件表
create table t_attachment(
  a_id int PRIMARY KEY,  --附件編號
  a_newName varchar2(100), --附件新名稱
  a_oldName varchar2(100), --附件原始名稱
  a_content_type varchar2(100), --附件型別
  a_create_date date,   --建立時間
  m_id int 	--留言編號
)
以上是涉及到的兩張表。

我想要達到的目的:因為留言可以存在多個附件,所以我必須在一行中顯示留言和附件

如圖:

這是要達到的效果。

當我寫sql 的時候,開始是這樣的:

select m.m_id,m.m_title,m.m_content,a_oldName from t_message m, t_attachment a where m.m_id=a.m_id
結果發現:查詢的結果

當然這裡面並沒有出現笛卡爾積,因為我插入的都是同一個檔案。所以為了將a_oldname合併到一行中。修改的 sql  語句如下

select m.m_id,m.m_title,to_char(m.m_content) m_content,wm_concat(a_oldName) a_oldName from t_message m, t_attachment a where m.m_id=a.m_id group by  m.m_id,m.m_title,to_char(m.m_content) 

主要用的函式方法是 wm_concat()  。 之所以用to_char() 函式方法, 是因為我 m_content用的是 clob。如果不轉換的話。會報sql語句錯誤:ORA-00932: 資料型別不一致: 應為 -, 但卻獲得 CLOB 。