2010-09-16 3 views
3

J'utilise SQL Server 2005 et je me demande s'il existe un moyen de faire une clause LIKE dans mes recherches xml.Existe-t-il une clause LIKE pour interroger XML dans SQL?

Voici une exemple de requête:

  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 

Je voudrais faire WHERE LastName like @lastName + '%' essentiellement.

EDIT:

requête de travail:

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

Répondre

3

Avez-vous essayé ?

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

Apparaît au travail, mais tue un peu ma vitesse de requête :)! – mint

Questions connexes