该字段中的值如下
<en-US>Parameter23</en-US>
<it-IT>Parameter</it-IT>
SQL查询
select *
from parametermaster
where cast(ParameterName as xml).exist('en-US/text()[contains(.,"P")]') = 1
我正在尝试将其作为
select *
from parametermaster
where cast(ParameterName as xml).exist('en-US/text()[starts-with(.,"P")]') = 1
正在给出错误
Msg 2395,Level 16,State 1,Line 1
XQuery [exist()]:没有函数 '{} http://www.w3.org/2004/07/xpath-functions:开始 - 与()'
任何人都可以帮助我,我想在SQL 2005 XQuery中创建LIKE运算符感觉。我是XQuery的新手。
答案 0 :(得分:11)
starts-with()/ ends-with()可以用substring()和string-length()函数的组合代替:
select *
from parametermaster
where cast(ParameterName as xml).exist('en-US/text()[substring(., 1, string-length("P")) = "P"]') = 1
一般来说,开始时(a,b)相当于
substring(a, 1, string-length(b)) = b
和结束 - (a,b)相当于
substring(a, string-length(a) - string-length(b)) = b
答案 1 :(得分:4)
这个怎么样:
select *
from parametermaster
where cast(ParameterName as xml).value("(en-US)[1]", "varchar(50)") LIKE 'P%'
基本上:
en-US
XML元素并将其值转换为varchar(50)
LIKE
列varchar(50)