私は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"
私の唯一の問題は、最初の住所ブロックは、住所1が含まれており、第二住所ブロックは、都市が含まれている場合も、レコードを返します。このなステートメントです。
これはSQL Server用ですか? –