2010-09-16 58 views
3

我正在使用SQL Server 2005,並且想知道是否有任何方法可以在我的xml搜索中執行LIKE子句。是否存在用於在SQL中查詢XML的LIKE子句

下面是一個示例查詢:

  SELECT Id, CaseNumber, XmlTest 
      FROM UploadReport 
      WHERE 
      CASE 
        WHEN @lastName != '' AND XmlTest.exist('(/CodeFiveReport/Parties/Party/Name/LastName[text()=sql:variable("@lastName")])') = 1 THEN 1 
        WHEN @firstName != '' AND XmlTest.exist('(/CodeFiveReport/Parties/Party/Name/FirstName[text()=sql:variable("@firstName")])') = 1 THEN 1 
        WHEN @middleName != '' AND XmlTest.exist('(/CodeFiveReport/Parties/Party/Name/MiddleName[text()=sql:variable("@middleName")])') = 1 THEN 1 
        WHEN @ssn != '' AND XmlTest.exist('(/CodeFiveReport/Parties/Party/SocialSecurityNumber[text()=sql:variable("@ssn")])') = 1 THEN 1    
        ELSE 0 
      END = 1 

我願做WHERE LastName like @lastName + '%'基本。

編輯:

工作查詢:

SELECT Id, CaseNumber, XmlTest 
      FROM UploadReport 
      WHERE 
       XmlTest.exist('(/CodeFiveReport/Parties/Party/Name/LastName[contains(text()[1], "Sm")])') = 1 

回答

3

你試過?

[contains(sql:variable("@lastName"))] 
+0

似乎工作,但殺死我的查詢速度有點:)! – mint 2010-09-16 13:12:36