SQL中按分隔符拆分字符串

简介: 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
2
3
4
5

二、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
shi
xiao
ming

(4)explode函数的局限性

  1. 不能关联原有的表中的其他字段
  2. 不能与group by、cluster by、distribute by、sort by联用
  3. 不能进行UDTF嵌套
  4. 参数只能是两种类型
  5. 一个select后面只能获得一个explode产生的视图,如果要显示多个列,则需要将多个视图合并。lateral view就是做这样的事的

3,lateral view

(1)定义

Lateral View用于和UDTF函数(explode、split)结合来使用
首先通过UDTF函数拆分成多行,再将多行结果组合成一个支持别名的虚拟表。虚拟表相当于再和主表关联, 从而达到添加“UDTF生成的字段“以外字段的目的, 即主表里的字段或者主表运算后的字段。
主要解决在select使用UDTF做查询过程中,查询只能包含单个UDTF,不能包含其他字段、以及多个UDTF的问题

(2)语法

lateral view UDTF(expression) table_view as new_column;

(3)参数解释

  1. UDTF(expression):复合逻辑规则的UDTF函数,最常用的explode
  2. table_view : 对应的虚拟表的表名
  3. new_col: 虚拟表里存放的有效字段

(4)测试

select col_type   -- 已拆分数据
from table_name
lateral view explode(split(col,',')) t as col_type   --col 为需要拆分的字段
相关文章
|
2月前
|
SQL 存储 Serverless
SQL语句拆分时间字段的技巧与方法
在数据库操作中,经常需要处理时间数据
|
2月前
|
SQL Oracle 关系型数据库
SQL语句中的引号使用技巧:正确处理字符串与标识符
在编写SQL语句时,引号的使用是一个基础且重要的环节
|
4月前
|
SQL XML JSON
在 SQL Server 中使用字符串转义
【8月更文挑战第5天】
343 7
在 SQL Server 中使用字符串转义
|
3月前
|
SQL 关系型数据库 MySQL
MySQL根据某个字段包含某个字符串或者字段的长度情况更新另一个字段的值,如何写sql
MySQL根据某个字段包含某个字符串或者字段的长度情况更新另一个字段的值,如何写sql
223 0
|
4月前
|
SQL 存储 关系型数据库
SQL字符串查询有哪些坑?
本文通过创建一个包含不同格式姓名数据的表格,探讨了MySQL中字符排序规则(Collation)的影响。通过使用不区分大小写和空格的查询条件,文章演示了如何获取所有插入的记录,并解释了排序规则中&quot;_ci&quot;、&quot;_cs&quot;及&quot;_bin&quot;的区别。此外,还强调了在数据处理过程中,应考虑大小写敏感性和字符串前后空格的问题,以防导致统计或比较上的错误。最后,提供了Go语言中处理这类问题的方法,如使用`strings.EqualFold()`进行不区分大小写的字符串比较,以及使用`strings.TrimSpace()`去除字符串两端的空白字符。
|
5月前
|
JSON 数据格式 SQL
SQL开发问题之直接使用join方法在处理字符串类型属性时可能会遇到性能问题如何解决
SQL开发问题之直接使用join方法在处理字符串类型属性时可能会遇到性能问题如何解决
|
4月前
|
SQL 数据采集 存储
"揭秘SQL Server中REPLACE函数的神奇力量!一键替换字符串,解锁数据处理的无限可能,你还在等什么?"
【8月更文挑战第20天】SQL Server 的 REPLACE 函数是处理字符串的强大工具,用于在查询中替换字符串的部分内容。基本语法为 `REPLACE(string_expression, string_pattern, string_replacement)`。例如,可将员工邮箱从 `@example.com` 替换为 `@newdomain.com`。支持多级嵌套替换与变量结合使用,适用于动态生成查询。注意大小写敏感性及全局替换特性。掌握 REPLACE 函数能有效提升数据处理能力。
230 0
|
5月前
|
SQL 存储 关系型数据库
MySQL设计规约问题之为什么要尽量将大的SQL语句拆分成小的SQL语句
MySQL设计规约问题之为什么要尽量将大的SQL语句拆分成小的SQL语句
|
SQL
SQL点滴33—SQL中的字符串操作
原文:SQL点滴33—SQL中的字符串操作 计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大、小写lower() 用来将一个字符串转换为小写,upper() 用来将一个字符串转换为大写 sele...
852 0
|
SQL
SQL点滴33—SQL中的字符串操作
计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student 字符串转换为大、小写lower() 用来将一个字符串转换为小写,upper() 用来将一个字符串转换为大写 select lower('I AM A STUDE...
752 0