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
结果发现:查询的结果 Oracle 如何合并某字段的值_第1张图片

当然这里面并没有出现笛卡尔积,因为我插入的都是同一个文件。所以为了将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 。



你可能感兴趣的:(#,Oracle学习篇)