将oracle 查询结果列拼接为字符串

将oracle 查询结果列拼接为字符串,第1张

create table test (id int, name varchar(10) )
insert into test values (1,'a')
insert into test values (1,'b')
insert into test values (1,'c')
insert into test values (2,'a')
insert into test values (2,'b')
insert into test values (3,'a')
insert into test values (3,'c')
select id,sys_connect_by_path(name,',') from (
select id,name, row_number() over(partition by id order by name)rn,
count() over(partition by id ) cnt from test
) a where level=cnt
start with rn=1 connect by prior id=id and prior rn=rn-1
测试后 可用。
一楼的回答其实最容易理解了。你把它修改成动态sql 就可以了。可以不受限制了。

不同的数据库,相应的字符拼接方式不同,通过对比加深一下记忆。

一、MySQL字符串拼接

1、CONCAT函数

语法格式:CONCAT(char c1, char c2, , char cn) ,其中char代表字符串,定长与不定长均可以

连接两个字符串

连接多个字符串

2、"+" *** 作符

连接两个字符串

 

连接多个字符串

3、假如其中一个字段为NULL,则用结果用空格代替NULL。

 

二、Oracle字符串拼接

1、CONCAT函数

语法格式:CONCAT(char c1, char c2) ,其中char代表字符串,定长与不定长均可以

连接两个字符串

连接多个字符串

使用CONCAT函数的嵌套实现。

2、"||" *** 作符

连接两个字符串

连接多个字符串

3、假如其中一个字段为NULL,则用结果用空格代替NULL。

扩展资料

字符串函数(String processing function)也叫字符串处理函数,指的是编程语言中用来进行字符串处理的函数,如C,pascal,Visual以及LotusScript中进行字符串拷贝,计算长度,字符查找等的函数。

字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s=“abcdefghij”,则s[1]=“a”,s[10]="j"。

而字符串的零位正是它的长度,如s[0]=10(※上述功能Ansistring没有。),这可以给我们提供很多方便,如高精度运算时每一位都可以转化为数字存入数组。

字符串函数的应用

1、连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn

例:concat(‘11’,'aa’)='11aa’;

2、求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。

例:copy(‘abdag’,2,3)=’bda’

3、删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。

例:s:=’abcde’;delete(s,2,3);结果s:=’ae’

4、插入子串。 过程Insert(s1,s2,I) 把s1插入到s2的第I个位置

例:s:=abc;insert(‘12’,s,2);结果s:=’a12bc’

5、求字符串长度 length(s) 例:length(‘12abc’)=5

在ASP中 求字符串长度用 len(s)例: len("abc12")=5

6、搜索子串的位置 pos(s1,s2) 如果s1是s2的子串 ,则返回s1的第一个字符在s2中的位置,若不是子串,则返回0

例:pos(‘ab’,’12abcd’)=3

7、字符的大写转换。Upcase(ch) 求字符ch的大写体。

例:upcase(‘a’)=’A’

8、数值转换为数串。 过程 Str(x,s) 把数值x化为数串s

例:str(12345,s); 结果s=’12345’

9、数串转换为数值。 过程val(s,x,I) 把数串s转化为数值x,如果成功则I=0,不成功则I为无效字符的序数,第三个参数也可不传

例:val(‘1234’,x,I);结果 x:=1234

参考资料:

百度百科 字符串函数的应用

拼接
没看明白你的意思
----------------------------------------------------------------
可以用游标解决~例如下面这样
CREATE OR REPLACE procedure test(MSG out VARCHAR2)
as
v_name varchar2(20);
cursor c_sell is
select ttitle 书籍名称 from titles t where tauthor='alex' ;
begin
open c_sell;
loop
fetch c_sell into v_name;
exit when c_sell%notfound;
MSG:= MSG || v_name || ',';
end loop;
close c_sell;
end;


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10351492.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-07
下一篇 2023-05-07

发表评论

登录后才能评论

评论列表(0条)

保存