XQuery中对应SQL LIKE '%.mp3'的通配符用法咨询
XQuery中实现类似SQL LIKE通配符匹配的方法
XQuery里没有SQL的LIKE关键字,你得用内置的字符串函数来实现类似的匹配效果,针对你的场景,有两种常用方法:
1. 用ends-with()匹配后缀(最适合你的需求)
你的需求是匹配所有以.mp3结尾的pPhrase属性,直接用ends-with()函数最简洁,它专门用来检查字符串是否以指定后缀结尾,完美对应SQL里的LIKE '%.mp3'。修改后的代码如下:
for $phrase in //phrases[ends-with(@pPhrase, '.mp3')] return concat(string($phrase/@pPhrase), ", ", $phrase/ancestor::entrance/string(@name))
2. 用matches()实现复杂正则匹配
如果之后需要更灵活的匹配(比如包含特定子串、复杂模式),可以用matches()函数,它支持正则表达式。比如同样匹配以.mp3结尾的内容,正则写法如下:
for $phrase in //phrases[matches(@pPhrase, '.+\.mp3')] return concat(string($phrase/@pPhrase), ", ", $phrase/ancestor::entrance/string(@name))
这里正则里的\.是转义后的点(因为正则中.代表任意字符),.+表示匹配任意长度的字符,整体就是匹配“任意字符+.mp3结尾”的字符串。
另外补充几个常用的匹配函数:
starts-with(@pPhrase, 'Phrase'):匹配以Phrase开头的字符串,对应SQL的LIKE 'Phrase%'contains(@pPhrase, 'test'):匹配包含test子串的字符串,对应SQL的LIKE '%test%'
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

