代码之家  ›  专栏  ›  技术社区  ›  Joep_S

使用具有多个相同字符的子字符串

  •  1
  • Joep_S  · 技术社区  · 5 年前

    substring 在SQL server中捕获特定文本字符串和以下内容之间的字符串 char(10) . 问题是 在完整的字符串中,所以我需要一些代码来本地化第一个 在我的特定字符串之后。使用下面的代码会由于负值而导致错误(第一个字符(10)出现在 my specific string

    SELECT SUBSTRING(col, LEN(LEFT(col, CHARINDEX ('my specific string', col))) + 1, LEN(col) - LEN(LEFT(col, 
        CHARINDEX ('my specific string', col))) - LEN(RIGHT(col, LEN(col) - CHARINDEX (char(10), col))) - 1);
    

    功能。

    1 回复  |  直到 5 年前
        1
  •  3
  •   Bart Hofland    5 年前

    对于这个问题中的特定数据,一个非常直接的答案:您可以将第三个参数传递给 CHARINDEX 函数调用查找 CHAR(10) 在特定的起始索引之后。作为第三个参数,可以传递 'my specific string'

    SELECT SUBSTRING(col, LEN(LEFT(col, CHARINDEX ('my specific string', col))) + 1, LEN(col) - LEN(LEFT(col, 
        CHARINDEX ('my specific string', col))) - LEN(RIGHT(col, LEN(col) - CHARINDEX (char(10), col, CHARINDEX ('my specific string', col)))) - 1);
    

    col 不能包含 字符(10) 之后 '我的特定字符串' '我的特定字符串' s也是。如果您想要在一个SELECT语句中处理(更复杂)需求的所有逻辑,那么事情很快就会变得一团糟。