0

我有一个 SQL Server 2008 数据库。有一个Documents使用以下模式调用的表:

 Id            int     PK      
 DocumentXml   xml

xml 文档看起来都像:

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

我想选择文本值/docroot/name以“S”开头的所有记录(不区分大小写)。

如何以最佳性能执行此查询?

4

2 回答 2

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 回答
1

我想选择文本值/docroot/name以“S”开头的所有记录(不区分大小写)。

使用这个 XPath 表达式

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