2017-08-17 84 views
2

我有一種情況,字符串中的第6個和第7個字符需要等於'73'。我嘗試使用LIKE '%73%',但問題是有時SQL Server會在其他可能位於字符串中的73上點擊。有沒有辦法只搜索字符串中的第6和第7個字符?T-SQL - 如何搜索字符串中的第n個字符

非常感謝大家的幫助!

回答

6

使用SUBSTRING(表達,啓動,長度)

SELECT mycolumn 
FROM mytable 
WHERE SUBSTRING (mycolumn ,6 , 2) = '73' 
2

嘗試此爲SQL Server

select * 
from MyTable 
where CHARINDEX('73', MyString) = 6 

此發現其中字符串 '73' 在位置開始6

+2

您可能會因使用此項支付性能損失。因爲它必須掃描MyString才能得到它的索引。用SUBSTRING你會更好。它有時會錯過另一個73在位置6之前的記錄。 –

+0

@MarekVitek這是真的,我沒有想到後者... – JohnHC

+0

@MarekVitek:性能損失與子串解決方案相同 – TheGameiswar

3

使用SUBSTRING

SELECT SUBSTRING(YourColumn,6,2) Result 
FROM dbo.YourTable; 

,你可以作爲一個過濾器使用:

SELECT * 
FROM dbo.YourTable 
WHERE SUBSTRING(YourColumn,6,2) = '73'; 
5

使用like,你可以這樣做:

where col like '_____73%' 

當然,其他的解決方案建議substring()也都很懂事。