【问题标题】:How to get sub string till 2nd occurence of delimiter如何获取子字符串直到第 2 次出现分隔符
【发布时间】:2020-02-25 14:05:26
【问题描述】:

我正在尝试获取子字符串,直到第 2 次出现分隔符,但有些无法正常工作。我关注了几个stackoverflow链接:

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 代码试图增加的第三个参数。

标签: sql amazon-redshift


【解决方案1】:

您可以使用SPLIT_PART

select split_part(col1,'+',1) || '+' || split_part(col1,'+',2) as string_value
from table_name;

【讨论】:

    【解决方案2】:

    您可以使用leftCharindex,尝试关注

    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;
    

    【讨论】:

      猜你喜欢
      • 2014-08-08
      • 2012-01-05
      • 2021-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多