oracle 查询结果用逗号隔开(非存储过程)
2013-12-19 21:03
513 查看
1.死的
2.活的俩种方法
(1).
(2).
SELECT trim(REGEXP_SUBSTR (replace('aa,bb,cc',''), '[^,]+', 1,ROWNUM)) as keywords from dual t CONNECT BY ROWNUM <=length(regexp_replace('aa,bb,cc','[^,]',''))+1 --LENGTH ('aa,bb,cc')-LENGTH (REPLACE ('aa,bb,cc',','))+1 和上面一样
2.活的俩种方法
(1).
SELECT distinct trim(REGEXP_SUBSTR(replace(ttt.keywords,' ',','), '[^,]+', 1,ttt.lv)) as keywords from ( select * from (select t.keywords,nvl(length(regexp_replace(replace(t.keywords, ' ', ','),'[^,]','')),0) + 1 cnt from (select distinct keywords from TEMP_TBL_KB_VIDEO_KEYWORD where keywords IS NOT NULL) t) tt, (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 100) cn where cn.lv <= tt.cnt ) ttt
(2).
SELECT VIDEOID AS VIDEO_ID, KEYWORD AS KEYWORD FROM (WITH VKD AS (SELECT VIDEOID, REPLACE(TRIM(KEYWORDS), ' ', ',') AS KEYWORDS FROM TEMP_TBL_KB_VIDEO_KEYWORD VVI_A WHERE KEYWORDS IS NOT NULL ) SELECT VIDEOID, SUBSTR(T.KEYWORDS_LOOP, INSTR(T.KEYWORDS_LOOP, ',', 1, C.LV) + 1, INSTR(T.KEYWORDS_LOOP, ',', 1, C.LV + 1) - (instr(T.KEYWORDS_LOOP, ',', 1, C.LV) + 1)) AS KEYWORD FROM (SELECT VIDEOID, ',' || KEYWORDS || ',' AS KEYWORDS_LOOP, LENGTH(KEYWORDS || ',') - NVL(LENGTH(REPLACE(KEYWORDS, ',')), 0) AS CNT FROM VKD) T, (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 100) C WHERE C.LV <= T.CNT) WHERE KEYWORD IS NOT NULL
相关文章推荐
- oracle 将查询结果中的一列多个结果合并为一个字符串 并以逗号格开
- mysql查询某字段的多条结果展示成按逗号隔开
- sql查询结果以逗号隔开
- MySQL 查询某字段的多条结果展示成按逗号隔开
- 数据库查询结果以逗号隔开一列显示
- ORACLE-合并查询结果
- MYSQL列中的数据以逗号隔开,如何查询
- oracle的查询结果合并
- Oracle - 为子查询提供动态结果集
- Oracle中把一张表查询结果插入到另一张表中
- oracle的聚集函数wm_concat()和listagg()不适用时,自定义通用的聚集函数合并查询结果列
- oracle 逗号分隔的字符串列字段查询列出多条记录
- SqlServer和Oracle从多行记录(数据集)中查询结果并拼接成一个字符串的SQL语句(纵表数据转成拼接的文本)
- Oracle查询结果加一个'全部'条件
- mybatis 使用oracle char 字段查询返回结果总是null
- mysql中使用FIND_IN_SET查询在逗号隔开的字符串中符合多个ID的数据
- Oracle将查询的结果放入一张自定义表中并再查询数据
- Oracle中某个字段里的值为逗号隔开的多个值
- Oracle 数据库已更新 页面查询结果未更新原因。
- oracle中将查询结果集生成新表