Oracle 如何合并某字段的值

来源:互联网 发布:java jdbc mysql 编辑:程序博客网 时间:2024/05/16 03:01

一.   前言

今天写小项目遇到一点问题,是关于想合并某个字段的问题。通过百度和结合自己的情况,解决了。在这里写下来,免得以后忘记还能看看。

二.正文

数据库表:

--留言信息对象表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 。



0 0
原创粉丝点击