首发于 数据库

SQL中按分隔符拆分字符串

一、Oracle数据库按分隔符拆分字符串

1,应用函数

REGEXP_SUBSTR

2,语法

REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)

3,参数解释

  1. __srcstr :需要进行正则处理的字符串
  2. __pattern :进行匹配的正则表达式
  3. __position :起始位置,从第几个字符开始正则表达式匹配(默认为1)
  4. __occurrence :标识第几个匹配组,默认为1
  5. __modifier :模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)

4,测试SQL

select regexp_substr('1,2,3','[^,]+',1,1) result from dual;

运行结果:

1

5,REGEXP_SUBSTR+CONNECT BY 使用

按分隔符拆分字符串+CONNECT BY 动态参数
测试SQL:

SELECT 
REGEXP_SUBSTR ('1,2,3,4,5', '[^,]+', 1,ROWNUM) 
FROM dual 
CONNECT BY ROWNUM <= LENGTH( '1,2,3,4,5' ) - LENGTH(regexp_replace('1,2,3,4,5', ',', '' )) + 1

运行结果:

1

二、hive数据库按分隔符拆分字符串

1,split()函数

(1)定义

split()函数是用于切分数据,也就是将一串字符串切割成了一个数组

(2)语法

语法:split(string str, string pat)
返回值:数组类型array

(3)参数解释

string str :待分割字符串
string pat:分割符

(4)测试

测试SQL:

select split ('wo,shi,xiao,ming',',');

运行结果:

["wo","shi","xiao","ming"]

2,explode函数

(1)定义

explode()函数是用于打散行的函数,将一行的数据拆分成一列

(2)语法

explode(array/map类型)
select explode(array_col) as new_col from table_name

(3)测试

测试SQL:

select explode(array("wo","shi","xiao","ming")) as word;

运行结果:

wo