Sql server 2008 类似Sql server的从结果中获取代码段

Sql server 2008 类似Sql server的从结果中获取代码段,sql-server-2008,sql-like,trim,Sql Server 2008,Sql Like,Trim,是否可以从类似查询的结果中获取代码段字符串 我不是在尝试新奇的东西。我所需要的只是TRIM查询字符串及其左右两侧的(即50个)字符 例如,如果LIKE返回 "The quick brown fox jumps over the lazy dog" 对于查询“fox”,我想得到 "brown fox jumps" 更新,这是我想到的。它似乎起作用了 declare @query nvarchar(100), @str nvarchar(100), @HowManyCharsToIncl

是否可以从类似查询的结果中获取代码段字符串

我不是在尝试新奇的东西。我所需要的只是TRIM查询字符串及其左右两侧的(即50个)字符

例如,如果LIKE返回

 "The quick brown fox jumps over the lazy dog"
对于查询“fox”,我想得到

 "brown fox jumps"
更新,这是我想到的。它似乎起作用了

  declare @query nvarchar(100), @str nvarchar(100), @HowManyCharsToInclude int,     @startIndex int, @endIndex int, @cutfromLeft int, @cutFromRight int
set @HowManyCharsToInclude = 10
set @str='The quick brown fox jumps over the lazy dog';
set @query = 'fox'
set @startIndex = (SELECT PATINDEX('%'+ @query+ '%', @str))
set @endIndex = (@startIndex + LEN(@query))
--set left, right cut
if(@startIndex>@HowManyCharsToInclude)
begin
set @cutfromLeft = @HowManyCharsToInclude
end
else
begin
set @cutfromLeft = @startIndex
end
--set right cut
if(LEN(@str) - @endIndex>@HowManyCharsToInclude)
begin
set @cutfromRight = @HowManyCharsToInclude
end
else
begin
set @cutfromRight = (LEN(@str) - @endIndex)
end

select  SUBSTRING(@str, @startIndex-@cutfromLeft, LEN(@query)+ @cutFromRight + @cutfromLeft)

回答这个问题:是的,有可能:D

哦,等等,我应该解释一下

使用内置的字符串函数

结合查找结果中的位置和了解结果的长度

所以你要写一些像

如果0不执行其他操作,则1获取字符串中正在搜索的文本的起始位置(17)

2下一步获取正在搜索的字符串的长度(3)

3获取整个结果字符串的长度(3x)


4使用substring将字符移到左边的substring(字段,if)(1-50的结果,谢谢,正在处理类似的事情。请查看我的更新。它是否有效,如果它给出了您想要的响应时间,我想您已经找到了答案。