我怎样才能找到PATINDEX()识别的模式

时间:2011-09-19 10:08:28

标签: sql-server

以下声明中PATINDEX标识了哪种模式?任何人都可以帮我分析一下吗? 我们怎样才能找到('我','II','III')中的哪一个?

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

请帮我找到。

1 个答案:

答案 0 :(得分:1)

这不是您使用PATINDEX的方式。 ,不是交替运营商。

您告诉它在集I,II,III中找到只重复很多字符的字符,因此可以简化为“找到I,的第一个位置”< / p>

你可以尝试

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匹配,因为匹配第二个的任何内容都会匹配第一个。