如何查询数据库表XML列中标签值包含前导空格的记录
XML列前导空格记录筛选查询方案
适用SQL Server数据库
通用写法(可识别所有类型前导空白字符)
SELECT Column1, Column2 FROM Table1 WHERE Column2.exist('//text()[matches(., "^\\s+")]') = 1
语法说明:
//text()遍历XML内所有层级的所有节点文本内容,不受节点名称、嵌套层级限制matches(., "^\\s+")用正则匹配当前文本是否以1个及以上空白字符开头(包含普通空格、制表符、换行符等)exist()方法只要存在任意一个符合条件的节点就返回1,刚好对应「任意标签值带前导空格」的筛选要求
仅检测普通半角前导空格的高性能写法
SELECT Column1, Column2 FROM Table1 WHERE Column2.exist('//text()[starts-with(., " ")]') = 1
该写法不需要调用正则解析,执行效率更高,仅匹配普通半角空格开头的文本。
适用PostgreSQL数据库
SELECT Column1, Column2 FROM Table1 WHERE xpath_exists('//text()[starts-with(., " ")]', Column2) IS TRUE;
内容的提问来源于stack exchange,提问作者user613400
相关产品推荐
相关产品推荐

