- PR -

SQL Server 2005 のXQuery(FLWR)を利用したあいまい検索について

1
投稿者投稿内容
KT
会議室デビュー日: 2006/12/15
投稿数: 2
投稿日時: 2006-12-15 11:34
発投稿になります。よろしくお願いいたします。
投稿場所を、XMLにするか、.NETにするか迷いましたが、製品依存による問題なので
ここに投稿させていただきました。

現在、SQL Server2005 +.NET Framework1.*(C#)+WindowsXP Pro
の開発環境で構築を行っています。

システムの入れ替えに伴い、ContactXML形式のデータを
SQL Server 2000に入れていたものをSQL Server2005のxml型に入れて
構築をしております。
その中で、フィルタリングで困っています。

前は、取得したXMLデータをプログラムでXPathを利用しあいまい検索をしていました。今回は2005ということで、XQueryを利用して、あいまい検索を行おうと思っているのですが、その式がうまくいきません。
試そうとしている式を、例として書かせていただきますが、for句の所で
エラーとなります。
Microsoftのサイトでも、あいまい検索の手法をみつけられなくて、困っています。
このXQueryの文法は、他のXMLDB(NeoCore)ではうまくいくようです。

SELECT DOCUMENT.query('declare namespace DC="http://www.xmlns.org/2002/ContactXML";
for $base in /DC:ContactXML/DC:ContactXMLItem[DC:Occupation/DC:OccupationItem/DC:OrganizationName =*'ab'*] 
return
<results>
<name>{data($base/DC:PersonName/DC:PersonNameItem/DC:FullName)}</name>
<address>{data($base/DC:Address/DC:AddressItem/DC:FullAddress)}</address>
<organization>{data($base/DC:Occupation/DC:OccupationItem/DC:OrganizationName)}</organization>
<URL>{data($base/DC:Web/DC:WebItem)}</URL></results>')
as XMLResults FROM [table] WHERE ID=1

加えて、where句で「*」のワイルドカードを利用しても文法エラーとなります。

ご教授お願い致します。
KT
会議室デビュー日: 2006/12/15
投稿数: 2
投稿日時: 2006-12-15 14:32
自己解決しました。

for句を
for $base in /DC:ContactXML/DC:ContactXMLItem[contains(.,"検索文字列")]
にして、できました。後はノード指定の微調整です。

お邪魔しました。

場違いでしたね。すみませんでした。
1

スキルアップ/キャリアアップ(JOB@IT)