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



我想在SQL Server中使用substring捕获特定文本字符串和以下char(10)之间的字符串。问题在于,完整的字符串中有几种char(10)的出现,因此我需要一些代码来在我的特定字符串之后定位第一个char(10)。使用以下代码导致由于负值而导致错误(第一个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))) - 1);

错误:无效长度参数传递给左或子字符串 功能。

在此问题中对特定数据的非常简单的答案:您可以将第三个参数传递给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'my specific string'之后无法包含CHAR(10) ...或者也可能包含多个'my specific string' s。如果您想要在单个选择中处理(更复杂(要求的所有逻辑,那么事情可能会很快变得凌乱。

相关内容

  • 没有找到相关文章

最新更新