Har*_*aid 4 xml sql-server-2005 where-clause xquery-sql sql-like
该领域的价值如下
<en-US>Parameter23</en-US>
<it-IT>Parameter</it-IT>
Run Code Online (Sandbox Code Playgroud)
SQL查询是
select *
from parametermaster
where cast(ParameterName as xml).exist('en-US/text()[contains(.,"P")]') = 1
Run Code Online (Sandbox Code Playgroud)
而我正试着这样做
select *
from parametermaster
where cast(ParameterName as xml).exist('en-US/text()[starts-with(.,"P")]') = 1
Run Code Online (Sandbox Code Playgroud)
是错误的
消息2395,级别16,状态1,行1
的XQuery [存在()]:没有功能'{} http://www.w3.org/2004/07/xpath-functions:开始-与()'
任何人都可以帮助我,我想在SQL 2005 XQuery中创建LIKE运算符的感觉.我是XQuery的新手.
小智 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
Run Code Online (Sandbox Code Playgroud)
一般来说,开始时(a,b)相当于
substring(a, 1, string-length(b)) = b
Run Code Online (Sandbox Code Playgroud)
和(a,b)相当于
substring(a, string-length(a) - string-length(b)) = b
Run Code Online (Sandbox Code Playgroud)
这个怎么样:
select *
from parametermaster
where cast(ParameterName as xml).value("(en-US)[1]", "varchar(50)") LIKE 'P%'
Run Code Online (Sandbox Code Playgroud)
基本上:
en-USXML 元素并将其值转换为varchar(50)LIKE然后对该varchar(50)列执行常规 SQL| 归档时间: |
|
| 查看次数: |
8090 次 |
| 最近记录: |