在数据库中直接支持xml类型的数据有:oracle xmltype 类型,sqlServer xml 类型。
以sqlServer为例:
sqlServer 数据库中封装了关于操作xml数据的一些方法
如图所示:
query方法:
首先声明一个xml的类型变量: declare @myxml xml
给声明的变量赋值: SELECT TOP 1 @myxml = CAST(F_BIZ_DATA AS XML ) FROM CNPC_CARD_REQ
赋值完毕后调用xml类型数据方法:
select @myxml.query('/Root/ProductDescription/Features')
根据xml文档,根据节点路径查询,比如上面:查询root根节点下的ProductDescription子节点下的Features子节点
返回的是结果是: <Features>document</Features>
查询是否存在某数据时:使用exist方法
eg:我想查询寻一段xml文档中是否包含我想到的数据
我们自己定义一段字符串:
DECLARE @x XML
SET @x='
<MasterxRow>
<body>
<ActivityType>2</ActivityType>
<ProductType>22</ProductType>
<ProductType>21</ProductType>
<RefNo>222222222222222222222</RefNo>
<ContactResult>0</ContactResult>
</body>
</MasterxRow>'
查看字符串中是否存在22 注意语法格式
IF @x.exist('//ProductType[.=21]')=1
PRINT 'aa'
ELSE
PRINT 'bb'
查询xml中的value值
基本语法:value (XQuery, SQLType)
SQLType 不能是xml类型,最好使用字符串类型来匹配 varchar
实例:
declare @str varchar
set @str=
@x.value('(/MasterxRow/body/ProductType)[1]','varchar(120)');
select @str