如何获取子字符串直到第 2 次出现分隔符
Posted
技术标签:
【中文标题】如何获取子字符串直到第 2 次出现分隔符【英文标题】:How to get sub string till 2nd occurence of delimiter 【发布时间】:2020-02-25 14:05:26 【问题描述】:我正在尝试获取子字符串,直到第 2 次出现分隔符,但有些无法正常工作。我关注了几个***链接:
SQL Server - find nth occurrence in a string
这是我数据库中的列:
this+is+my
never+ending+movie
hello
需要的输出
this+is
never+ending
hello
我试过了:
charindex('+', col1, (charindex('+', col1, 1))+1)
错误:SQL 错误 [500310] [42883]:Amazon 无效操作:函数 charindex("unknown", character varying, integer) 不存在;
我正在使用 Amzaon Redshift 数据库和 Dbeaver 进行连接。
【问题讨论】:
部分问题是您尝试将 SQL Server 解决方案应用于 Redshift 问题,并且两个数据库以不同方式实现CHARINDEX
,如错误消息中所示。 Redshift 版本不包含 SQL Server 代码试图增加的第三个参数。
【参考方案1】:
您可以使用SPLIT_PART
select split_part(col1,'+',1) || '+' || split_part(col1,'+',2) as string_value
from table_name;
【讨论】:
【参考方案2】:您可以使用left
和Charindex
,尝试关注
declare @S varchar(20) = 'this+problem+is+fixedby+Girish';
select left(@S, charindex('+', @S, charindex('+', @S)+1)-1) as Result;
这里是dbfiddle
在你的情况下:-
select left(columnname, charindex('+', columnname, charindex('+', @S)+1)-1) from your table as Result;
【讨论】:
以上是关于如何获取子字符串直到第 2 次出现分隔符的主要内容,如果未能解决你的问题,请参考以下文章