【发布时间】:2019-07-10 10:23:29
【问题描述】:
我有一个有效的子字符串查询,但如果在我搜索的查询之后没有任何措辞,它就会中断。我不知道如何解决它。
我尝试在 len 之后删除和更改数字 +1 +2 -1 -2 但没有机会让它工作。
declare
@FullText nvarchar(400) = 'My Code in ''ABC123, CDE456'' and my digit 1',
@KnownBeginning nvarchar(400) = 'Code in ''',
@KnownEnding nvarchar(400) = ''' '
select SUBSTRING(@FullText, CHARINDEX(@KnownBeginning, @FullText) + LEN(@KnownBeginning) ,
CHARINDEX(@KnownEnding,@FullText) - (CHARINDEX(@KnownBeginning, @FullText)
+ LEN(@KnownBeginning)))
--@FullText2 nvarchar(400) = 'My Code in ''ABC123, CDE456'''
上面的代码可以工作,但是如果我们将@FullText 替换为@FullText2,在'' - “and my digit 1”之后没有文本,则选择会中断。 如果在找到搜索的字符串之后有任何文本,则子字符串似乎有效。但是如果在 ''ABC123, CDE456'' 之后没有其他内容,它会说:
消息 537,第 16 级,状态 3,第 7 行 传递给 LEFT 或 SUBSTRING 函数的长度参数无效。
如果引号后有或没有文本,则选择应始终返回。
【问题讨论】:
标签: sql-server tsql substring