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 个字符串的主要内容,如果未能解决你的问题,请参考以下文章