ORACLE 按逗号拆分字符串为多行】的更多相关文章

with t as (select '1,2,3,10,11,12' a from dual) select substr(a, decode(level - 1, 0, 0, instr(a, ',', 1, level - 1)) + 1, (decode(level, regexp_count(a, ',') + 1, length(a) + 1, instr(a, ',', 1, level))) - (decode(level - 1, 0, 0, instr(a, ',', 1, l…
Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下: 在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20','23'的集合. REGEXP_SUBSTR函数格式如下: function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier) __srcstr     :需要进行正则处理的字符串 __pattern    :进行匹配的正则表…
不规范的表设计往往会带来程序设计上的麻烦,也会降低SQL的性能. 例如下表显示的内容: 这样我们调取多值字段用来做匹配的话就比较麻烦,我们可以通过正则表达式REGEXP_SUBSTR先将 多值得列分成多行,例如上面所示,我们拆分后变成三行 SELECT DISTINCT KUNNR,    MATNR,  ROW_ID,  ZFLAG,  ZVPFLAG,   REGEXP_SUBSTR(ZBMATNR, '[^,]+', 1, LEVEL) ZBMATNR,  REGEXP_SUBSTR(ZB…
一.拆分字符串为若干行 例一:要求将表emp中的'king'按照每行一个单词拆成四行 注意:substr(str,pos):截取pos位置开始的字符: substr(str,pos,len):从pos位置开始,选出接下去的len个字符 表emp: eid ename 1 ring 2 king 3 ting 4 ping 首先,建立表tmp(基干表,为了配合表一使用): tid 1 2 3 4 5 然后,select emp.ename,tmp.tid from emp,tmp where em…
清洗数据需要将某个字段内以空格分隔的字符串拆分成多行单个的字符串,百度了很多种方法大概归结起来也就这几种方法最为有效,现在把贴出来: 第一种: select regexp_substr('1 2 3','[^ ]+',1,level,'i') from dual connect by level <= length('1 2 3') -length(regexp_replace('1 2 3',' ',''))+1; 效果就是这个样子↓ 效果 这种方法的核心就是regexp_substr函数,通…
Oracle把逗号分割的字符串转换为可放入in的条件语句的字符数列   前台传来的字符串:'589,321' SELECT*FROM TAB_A T1 WHERE  T1.CODE  IN ( SELECT REGEXP_SUBSTR('589,321','[^,]+', 1, LEVEL) FROM DUAL CONNECT BY REGEXP_SUBSTR('SMITH,ALLEN,WARD,JONES', '[^,]+', 1, LEVEL) IS NOT NULL )…
http://blog.csdn.net/mchdba/article/details/53889803 ------------------------------------------------------------------------------- mysql> create table t1(c1 varchar(32),c2 varchar(32)); Query OK, 0 rows affected (0.02 sec) mysql> INSERT INTO t1 SE…
转自:http://m.blog.csdn.net/article/details?id=51946573 <-->功能需求                 有一个比较长的SQL语句,查询出来中间会有类似"abc1,cbd2,db3,db5"这样的行记录,然后想要达到的效果就是将这样的记录按照逗号间隔符拆分出来一条变成4条,这样记录有多条,然后所有有逗号间隔符的都要拆分出来,然后形成新结果集去关联别的表记录.这条长的sql如下:   select extractvalue(…
方法1:运用excel单元格拆分合并实现 思路:用VBA正则查询左侧括号个数,对右侧单元格逐一按逗号.顿号等符号分列,同时左侧按括号分列(分列只能按括号单边分列),分列完成后按要求合并,本题事例把括号换成{}+把对应答案的空填入,本题先按逗号分列,再按顿号.分列后按左侧分出来的第一列和右侧分出来第一列先合并,第二第三.....依次类推,合并再次用正则匹配,此时匹配{}的个数,如果同行{}个数和替换之前()的一致,说明是拆分正确的.然后筛选不一致的,重新按新的符号拆分,拆分后操作和第一次的一致,依…
1.说明 Oracle数据库导入csv文件, 当csv文件较小时, 可以使用数据库管理工具, 比如DBevaer导入到数据库, 当csv文件很大时, 可以使用Oracle提供的sqlldr命令行工具, 能够快速导入大量数据. 在数据库之间进行数据迁移时, 特别是不同类型的数据库, 使用csv文件是一种很好的选择. 2.sqlldr用法 下面介绍sqlldr用法, 有一个USER_INFO.csv文件, 需要导入到数据库中USER_INFO表, 而且有1.5亿条数据, 要求导入耗时尽量小. 这里先…