2011-09-19 39 views
1

标识的模式下列语句中的PATINDEX标识了哪种模式?任何人都可以帮我分析一下吗? 我们如何找到('I','II','III')中的哪一个被识别?我如何找到由PATINDEX()

select PATINDEX ('%[I,II,III]%','sjfhasjdg II') 

请帮我找到它。

回答

1

这不是你如何使用PATINDEX,不是交替操作符。

你告诉它在集合I,II,III这只是重复了很多字符,从而可以简化为“发现的任何I,第一位置”,找到字符

你可以尝试

WITH SearchTerms(Term) 
    AS (SELECT 'I' 
     UNION ALL 
     SELECT 'II' 
     UNION ALL 
     SELECT 'III'), 
    ToBeSearched(string) 
    AS (SELECT 'sjfhasjdg II') 
SELECT string, 
     Term, 
     Charindex(Term, string) AS Location 
FROM ToBeSearched 
     JOIN SearchTerms 
     ON Charindex(Term, string) > 0 

返回

string  Term Location 
------------ ---- ----------- 
sjfhasjdg II I 11 
sjfhasjdg II II 11 

当然都III匹配任何匹配第二个将始终匹配第一个。

+0

请你给我推荐替代运营商或做它的方式。提前致谢。 – Shine