0

SQLServer2008データベースがあります。Documents次のスキーマで呼び出されるテーブルがあります。

 Id            int     PK      
 DocumentXml   xml

xmlドキュメントはすべて次のようになります。

<docroot>
    <name>Some Name</name>
</docroot>

/docroot/nameのテキスト値が「S」(大文字と小文字を区別しない)で始まるすべてのレコードを選択したいと思います。

このクエリを最高のパフォーマンスで実行するにはどうすればよいですか?

4

2 に答える 2

1

/docroot/nameのテキスト値が「S」(大文字と小文字を区別しない)で始まるすべてのレコードを選択したいと思います。

このXPath式を使用します

/*/name[starts-with(translate(.,'S','s'), 's')]
于 2011-02-23T04:26:35.543 に答える
1

パフォーマンスについてはわかりませんが、次のようなことができます。

SELECT (list of columns)
FROM dbo.Documents
WHERE DocumentXml.value('(/docroot/name)[1]', 'varchar(100)') LIKE 'S%'

データベースの照合で大文字と小文字が区別されない場合、このLIKE操作でも大文字と小文字が区別されません。

于 2011-02-23T05:46:05.673 に答える