2011-11-16 41 views
1

是否可以從LIKE查詢的結果中獲取片段字符串?Sql server LIKE從結果中獲取片段

我不想嘗試一些奇特的東西。我想要的只是TRIM查詢字符串和左右兩個字符(即50個字符)。

例如,如果像查詢 「狐狸」 返回

"The quick brown fox jumps over the lazy dog" 

,我想

"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, @[email protected], LEN(@query)+ @cutFromRight + @cutfromLeft) 
+0

因爲它的工作原理,如果它提出你想要的響應時間,我想你有你的答案。 – xQbert

回答

0

要回答這個問題:是的,它是可能的:d

哦,等一下我應該解釋

如何使用內置...字符串函數 MSFT String Functions

結合找到結果中的位置並知道結果的長度。

so psudo c頌像...

1獲得啓動文本的位置被搜索的字符串,如果0別的什麼也不做(17)

2下獲得被搜索字符串的長度(3)

3獲得整個結果字符串的長度(3x)

4使用子字符串獲取字符左邊的子字符串(字段if(對於100 +長度的字符串,1到50的結果爲1 - 50 < 1,然後爲1的結果爲1-50) 3)

但是,所有這些都增加了w ork會減慢你的結果,你最好在數據庫層之外進行這種類型的操作。

正則表達式可能工作更快,我不得不考慮如何去做。

+0

謝謝,正在做這樣的事情。請參閱我的更新 – nLL