sql-server - T-SQL XML - 存在任何元素
问题描述
我需要找出元素下是否存在任何 xml 元素。实体下可能有多个元素或没有元素。以下是输入 xml 的示例(为了便于阅读,删除了版本)
declare @xml xml= '<entity name="User" />'
declare @xml xml= '<entity name="User"> <email>s@s.com</email></entity>
declare @xml xml= '<entity name="User"> <admin>1</admin></entity>
select IsExists = ISNULL(@xml.value('(entity/text())[1]','VARCHAR(max)'), 'N')
我正在尝试使用价值并尝试提取文本。但它似乎不起作用。任何帮助或建议。
解决方案
也许这就是你的想法。
declare @xml1 xml= '<entity name="User" />'
declare @xml2 xml= '<entity name="User"><email>s@s.com</email><email>t@s.com</email></entity>'
declare @xml3 xml= '<entity name="User"><admin>1</admin></entity>'
select @xml1.exist('entity/*') as [xml1?],
@xml2.exist('entity/*') as [xml2?],
@xml3.exist('entity/*') as [xml3?]
xml1? xml2? xml3?
----- ----- -----
0 1 1
如果你想要所有元素的文本。
select CAST(@xml1.query('entity/*') as varchar(20)) as [text1],
CAST(@xml2.query('entity/*') as varchar(45)) as [text2],
CAST(@xml3.query('entity/*') as varchar(20)) as [text3]
text1 text2 text3
-------------------- --------------------------------------------- --------------------
<email>s@s.com</email><email>t@s.com</email> <admin>1</admin>
推荐阅读
- arrays - 在 AWS Athena 中使用 serde 格式在 json 文件中提取数组和嵌套数组
- python - 如何根据列中包含的值子集对python中的数据框行进行排序
- sql - 过滤 SQL 错误数据
- python - 尽管安装了 PIP,Python Pillow(或 PIL)仍无法正常工作
- authentication - Google Colab - 无法再安装 Google 云端硬盘 - 浏览器弹出窗口(桌面版 Google 云端硬盘)而不是代码输出中的链接以进行授权
- ssl - 无法连接到 LAN 上的安全 GRPC 服务器
- java - java.lang.UnsupportedClassVersionError:在 Gradle 项目中
- amazon-web-services - 带有托管在 Azure 应用服务上的 REST API 的 Azure 静态应用
- javascript - 基于 Promise 的 Angular 路由 - 404 错误
- javascript - Cloudflare worker 用于重定向、无限循环