Oracle SQL 查询:按空格分割字符串并获取第 n 个字符串

Posted

技术标签:

【中文标题】Oracle SQL 查询:按空格分割字符串并获取第 n 个字符串【英文标题】:Oracle SQL query: Split string by space and get the nth string 【发布时间】:2021-08-05 15:52:43 【问题描述】:

我一直在 *** 上搜索这个问题,但还没有找到答案。

给定字符串“你好,我的名字是...”,我想用空格分割字符串并获取该字符串的第 n 个元素。

例如拆分后:[hello,my,name,is...] 第一个元素是“hello”,第二个元素是“my”,依此类推..

我的尝试:

SELECT REGEXP_SUBSTR(help, ' ', 1, 2) from 
(select 'hello my name is...' as help from dual);

给我一​​个空的结果是不正确的。我认为正则表达式空间有问题。

【问题讨论】:

第一:如果你有两个连续的空格,你会认为它是一个元素(元素是空字符串,Oracle 将其视为null)?或者您希望将一个、两个或任意数量的连续空格视为 single 分隔符?第二:如果输入字符串的元素少于 n 怎么办?你想在输出中显示什么? 只有一个空格。假设输入 r 总是单个空格 【参考方案1】:

你很接近。你只需要搜索非空格,因为那是你想要返回的:

select REGEXP_SUBSTR(help, '[^ ]+', 1, 2)
from (select 'hello my name is...' as help from dual);

【讨论】:

以上是关于Oracle SQL 查询:按空格分割字符串并获取第 n 个字符串的主要内容,如果未能解决你的问题,请参考以下文章

oracle sql查询以获取没有空格的列值

Oracle SQL 查询计数组按时间戳子串

Sql中将字符串按分割符拆分

sql 如何以逗号为分隔符分割一个字段的值

sqlserver查询字段里面如何去除空格

SQL拆分逗号分隔的字符串