Я очень новичок в XQUERY/XPATH :), поэтому я вполне мог бы поступить неправильно. У меня есть объект клиента, который сериализуется и хранится в столбце базы данных в следующем формате.Поиск соответствующих записей с использованием XQuery/XPath
<Customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Addresses>
<AddressBlock>
<AddressLine1>1234 SomeStreet Ave.</AddressLine1>
<City>SomeCity</City>
<State>SomeState</State>
<Zipcode>SomeZip</Zipcode>
</AddressBlock>
<AddressBlock>
<AddressLine1>5678 SomeOtherStreet Ave.</AddressLine1>
<City>SomeOtherCity</City>
<State>SomeOtherState</State>
<Zipcode>SomeOtherZip</Zipcode>
</AddressBlock>
</Addresses>
</Customer>
Я ищу способ выбора этой записи, если адресная строка1 и город в том же адресном блоке содержат определенные ключевые слова. У меня есть следующее утверждение, которое почти делает то, что я ищу.
select *
from users
where [UserData].exist('/Customer/Addresses/AddressBlock/AddressLine1/text()[contains(upper-case(.),""SOMESTREET"")]')=1
and [UserData].exist('/Customer/Addresses/AddressBlock/City/text()[contains(upper-case(.),""SOMECITY"")]')=1"
Моя единственная проблема заключается в даного также вернет запись, если первый addressblock содержит addressLine1 и второй addressblock содержит город.
Это для SQL Server? –