我想substring
在 SQL Server 中使用来捕获特定文本字符串和以下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);
错误:传递给 LEFT 或 SUBSTRING 函数的长度参数无效。
对这个问题中特定数据的一个非常直接的回答:您可以将第三个参数传递给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
不能包含 a CHAR(10)
after a 'my specific string'
... 或者它也可能包含多个'my specific string'
s 。如果您希望在单个 SELECT 语句中处理您的(更复杂的)需求的所有逻辑,事情会很快变得混乱。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句