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…
Mysql 字符串拆分 OR 一行转多行 需要了解的的几个mysql 函数: A.substring_index():字符串截取 substring_index(str,delim,count)   str:要处理的字符串       delim:分隔符       count:计数 B.length():字符长度函数 C.replace():替换函数 不说了,直接看代码: SELECT substring_index(substring_index( a.chain, ), ) AS ID F…
Clickhouse 字符串拆分 OR 一行转多行 我想把 '123_456_142354_23543' 通过'_' 下划线进行拆分成…
  help_topic表是数据库mysql下的一个表        SUBSTRING_INDEX(s, delimiter, number)        返回从字符串 s 的第 number 个出现的分隔符 delimiter 之后的子串. 如果 number 是正数,返回第 number 个字符左边的字符串. SELECT SUBSTRING_INDEX('a*b*c*d*e','*',3); ---- a*b*c 如果 number 是负数,返回第(number 的绝对值(从右边数))…
, rownum), length(, rownum, length(replace('a,b,c,d', ',', '')), length('a,b,c,d') from dual connect by rownum <= length(;…
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 )…
清洗数据需要将某个字段内以空格分隔的字符串拆分成多行单个的字符串,百度了很多种方法大概归结起来也就这几种方法最为有效,现在把贴出来: 第一种: 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函数,通…
转自:http://m.blog.csdn.net/article/details?id=51946573 <-->功能需求                 有一个比较长的SQL语句,查询出来中间会有类似"abc1,cbd2,db3,db5"这样的行记录,然后想要达到的效果就是将这样的记录按照逗号间隔符拆分出来一条变成4条,这样记录有多条,然后所有有逗号间隔符的都要拆分出来,然后形成新结果集去关联别的表记录.这条长的sql如下:   select extractvalue(…
功能与.net版string.Split函数类似,只不过.net返回的是数组,这个返回的是一个单列表格,每个拆分出来的子串占一行.可选是否移除空格子串和重复项.市面上类似的函数不算少,但大多都是在循环中对原串进行改动,我感觉这样不好,虽然不知道sql的字符串是不是像.net的一样具有不可变性,但感觉尽量不要去动原串最好,万一sql的字串也不可变,那变一次就要产生一份,尤其是每圈循环都在变,内存消耗让人心疼,所以才有重新造个轮子的想法. 另外,如果SQL开启了CLR支持,完全可以封装一个.net的…
原文:T-SQL技巧收集--拆分字符串 在开发中,很多时候都需要处理拆分字符串的操作.下面收集了几种方法供大家分享,其中的逗号可以改为多种有需要的符号,但是不能针对多种符号同时存在的例子.有待各位补充: 说明: 将字符串转换为正规化的数据表,可以使用多种方法实现,比如前端程序处理.游标.数据库循环函数,都是常用的技巧. 对于处理这些问题,比较好的思路就是使用SUBSTRING函数取出字符串,然后使用CHARINDEX函数定位.最后搭配排序函数完成拆分. 对于2005以后,可以使用CTE来实现.另…