2017-08-17 123 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()也都很懂事。