简体   繁体   中英

Is there a LIKE Clause for querying XML in SQL

I'm using SQL Server 2005 and am wondering if there is any way to do a LIKE clause in my xml searches.

Here's a sample query:

            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

I would like to do WHERE LastName like @lastName + '%' basically.

EDIT:

Working query:

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

你试过contains()吗?

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM