【问题标题】:SQL split string and combine first and second occurrenceSQL拆分字符串并结合第一次和第二次出现
【发布时间】:2021-10-02 03:05:12
【问题描述】:

我有一个字符串如下

Test1: Test Exp: Test3

我正在尝试提取字符串,以便输出应该是

Test1: Test Exp

我尝试如下

DECLARE @myString NVARCHAR(MAX) = 'Test1: Test Exp: Test3'
SELECT SUBSTRING(@myString,0,CHARINDEX(':',@myString,0)) AS firstPart,
SUBSTRING(@myString,CHARINDEX(':',@myString,0)+1,LEN(@myString)) AS secondPart

这给出了输出

Test1 Test Exp: Test3

【问题讨论】:

  • 预期输出应为Tes1: Test ExpTest1: Test Exp?
  • 对不起 Test1: Test Exp some type error

标签: sql sql-server tsql


【解决方案1】:

要获取Test1: Test Ex,您可以执行以下操作:

SELECT SUBSTRING(@myString, 0, LEN(@myString) - CHARINDEX(':', REVERSE(@myString)))

部分:

LEN(@myString) - CHARINDEX(':', REVERSE(@myString))

基本上充当LastIndexOf(':')

【讨论】:

    【解决方案2】:

    如果您的预期输出是Test1: Test Exp,请尝试以下操作:

    DECLARE @myString NVARCHAR(MAX) = 'Test1: Test Exp: Test3'
    SELECT SUBSTRING(@myString,0,CHARINDEX(':',@myString,0)) AS firstPart,
           SUBSTRING(@myString,0,CHARINDEX(':',@myString,CHARINDEX(':',@myString,0)+1)) AS secondPart
    

    我想你想得到第二个冒号之前的字符串:

    可以忽略第一个冒号,搜索第二个冒号。

    CHARINDEX(':',@myString,CHARINDEX(':',@myString,0)+1)
    

    【讨论】:

      猜你喜欢
      • 2013-12-28
      • 2021-10-31
      • 1970-01-01
      • 2018-02-05
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多