我有一个 SQL Server 2008 数据库。有一个Documents
使用以下模式调用的表:
Id int PK
DocumentXml xml
xml 文档看起来都像:
<docroot>
<name>Some Name</name>
</docroot>
我想选择文本值/docroot/name
以“S”开头的所有记录(不区分大小写)。
如何以最佳性能执行此查询?
我有一个 SQL Server 2008 数据库。有一个Documents
使用以下模式调用的表:
Id int PK
DocumentXml xml
xml 文档看起来都像:
<docroot>
<name>Some Name</name>
</docroot>
我想选择文本值/docroot/name
以“S”开头的所有记录(不区分大小写)。
如何以最佳性能执行此查询?
不确定性能 - 但您可以执行以下操作:
SELECT (list of columns)
FROM dbo.Documents
WHERE DocumentXml.value('(/docroot/name)[1]', 'varchar(100)') LIKE 'S%'
如果您的数据库排序规则不区分大小写,则此LIKE
操作也将不区分大小写。
我想选择文本值
/docroot/name
以“S”开头的所有记录(不区分大小写)。
使用这个 XPath 表达式:
/*/name[starts-with(translate(.,'S','s'), 's')]