XML Data Type Methods(一)
XML Data Type Methods(一)
/*XML Data Type Methods:
1.The query('XQuery') method retrieves(vt.检索,重新得到) a subset of untyped XML from the target XML instance 2.The value('XQuery',dataType) method returns a scalar value(标量值) from the targeted XML document.
The returned value is converted to the data type you specify when you call the method. 3.The exist('XQuery') method lets you test for the existence of an element or one of its values 4.The nodes('XQuery') method returns what is essentially a table that includes one column.
That means you should use the method only in those parts of a statement that can handle rowset views, such as the FROM clause.
It also means that, when you call the nodes() method, you must assign a table alias and column alias to the rowset view returned by the method
5.The modify('XQuery') method lets you update that data
*/ DECLARE @StoresTable TABLE
(
StoreID INT IDENTITY(1,1) PRIMARY KEY,
Survey_untyped XML,
Survey_typed XML
) INSERT INTO @StoresTable(Survey_untyped,Survey_typed)
VALUES
(
'<UnifiedRequest>
<CommonInfo>
<Version>1.14</Version>
<Username>EC</Username>
</CommonInfo>
<OrderInfo>
<CompanyCode>1003</CompanyCode>
<PayTermsCode>024</PayTermsCode>
</OrderInfo>
</UnifiedRequest>',
'<UnifiedRequest
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://tempuri.org/UnifiedRequest.xsd">
<CommonInfo>
<Version>1.14</Version>
<Username>EC</Username>
</CommonInfo>
<OrderInfo>
<CompanyCode>1003</CompanyCode>
<PayTermsCode>024</PayTermsCode>
</OrderInfo>
</UnifiedRequest>'
) --1.UntypedColumn
--1.1 query(xpathParameter) method
SELECT
Survey_untyped.query('/UnifiedRequest/OrderInfo') AS Info_typed
FROM
@StoresTable
/*Result:
<OrderInfo>
<CompanyCode>1003</CompanyCode>
<PayTermsCode>024</PayTermsCode>
</OrderInfo>
*/
--1.2 value(xpathParameter) method
SELECT
Survey_untyped.value('(/UnifiedRequest/OrderInfo/CompanyCode/text())[1]','INT') AS CompanyCode
FROM
@StoresTable --1.3 exist(xpathParameter) method
SELECT TOP(1)
CASE
WHEN Survey_untyped.exist('/UnifiedRequest/OrderInfo/CompanyCode/text()')=1 THEN 'Found'
ELSE 'Not Found'
END
FROM
@StoresTable --1.4 nodes(xpathParameter) method
DECLARE @bikes XML
SET @bikes =
'<Products>
<Product>Mountain</Product>
<Product>Road</Product>
</Products>'
SELECT
Category.query('./text()') AS BikeTypes1,--return a subset of xml
Category.value('(./text())[1]','VARCHAR(20)') AS BikeTypes2--return string
FROM
@bikes.nodes('/Products/Product')
AS Bike(Category);
/*Result
BikeTypes1 BikeTypes2
---------------------------
Mountain Mountain
Road Road
*/ --2.TypedColumn which contains namespace
--2.1 query(xpathParameter) method
;WITH XMLNAMESPACES(DEFAULT 'http://tempuri.org/UnifiedRequest.xsd')
SELECT
Survey_typed.query('/UnifiedRequest/OrderInfo') AS Info_typed
FROM
@StoresTable
/*Result:
<p1:OrderInfo xmlns:p1="http://tempuri.org/UnifiedRequest.xsd">
<p1:CompanyCode>1003</p1:CompanyCode>
<p1:PayTermsCode>024</p1:PayTermsCode>
</p1:OrderInfo>
*/ ;WITH XMLNAMESPACES('http://tempuri.org/UnifiedRequest.xsd' AS UFD)
SELECT
Survey_typed.query('/UFD:UnifiedRequest/UFD:OrderInfo') AS Info_typed
FROM
@StoresTable
/*Result:
<UFD:OrderInfo xmlns:UFD="http://tempuri.org/UnifiedRequest.xsd">
<UFD:CompanyCode>1003</UFD:CompanyCode>
<UFD:PayTermsCode>024</UFD:PayTermsCode>
</UFD:OrderInfo>
*/ SELECT
Survey_typed.query('declare namespace UFR="http://tempuri.org/UnifiedRequest.xsd";
/UFR:UnifiedRequest/UFR:OrderInfo') AS Info_typed
FROM
@StoresTable;
/*Result:
<UFR:OrderInfo xmlns:UFR="http://tempuri.org/UnifiedRequest.xsd">
<UFR:CompanyCode>1003</UFR:CompanyCode>
<UFR:PayTermsCode>024</UFR:PayTermsCode>
</UFR:OrderInfo>
*/ ;WITH XMLNAMESPACES('http://tempuri.org/UnifiedRequest.xsd' AS UFD)
SELECT
Survey_typed.query('/UFD:UnifiedRequest') AS Info_typed
FROM
@StoresTable;
/*Result:
<UnifiedRequest xmlns="http://tempuri.org/UnifiedRequest.xsd" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<CommonInfo>
<Version>1.14</Version>
<Username>EC</Username>
</CommonInfo>
<OrderInfo>
<CompanyCode>1003</CompanyCode>
<PayTermsCode>024</PayTermsCode>
</OrderInfo>
</UnifiedRequest>
*/ --2.2 value(xpathParameter,dataType) method
;WITH XMLNAMESPACES(DEFAULT 'http://tempuri.org/UnifiedRequest.xsd')
SELECT
--Result:1003
Survey_typed.value('(/UnifiedRequest/OrderInfo/CompanyCode/text())[1]','INT') AS CompanyCode
FROM
@StoresTable SELECT
--Result:1003
Survey_typed.value('declare namespace UFD="http://tempuri.org/UnifiedRequest.xsd";
(/UFD:UnifiedRequest/UFD:OrderInfo/UFD:CompanyCode/text())[1]','INT') AS CompanyCode
FROM
@StoresTable --2.3 exist(xpathParameter) method
;WITH XMLNAMESPACES(DEFAULT 'http://tempuri.org/UnifiedRequest.xsd')
SELECT TOP(1)
CASE
WHEN Survey_typed.exist('/UnifiedRequest/OrderInfo/CompanyCode/text()')=1 THEN 'Found'
ELSE 'Not Found'
END FROM
@StoresTable --2.4 nodes(xpathParameter) method
DECLARE @bikes2 XML
SET @bikes2 =
'<Products xmlns="http://tempuri.org/UnifiedRequest.xsd">
<Product>Mountain</Product>
<Product>Road</Product>
</Products>' ;WITH XMLNAMESPACES(DEFAULT 'http://tempuri.org/UnifiedRequest.xsd')
SELECT
Category.query('./text()') AS BikeTypes1,--return a subset of xml
Category.value('(./text())[1]','VARCHAR(20)') AS BikeTypes2--return string
FROM
@bikes2.nodes('/Products/Product') AS Bike(Category);
/*Result
BikeTypes1 BikeTypes2
---------------------------
Mountain Mountain
Road Road
*/
XML Data Type Methods(一)的更多相关文章
- xml Data Type Methods in sql server
nodes() Method (xml Data Type) https://docs.microsoft.com/en-us/sql/t-sql/xml/nodes-method-xml-data- ...
- SQL Server error "Xml data type is not supported in distributed queries" and workaround for it
Recently while working with data migration,got an error while running a following query where Server ...
- no data type for node
java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.IdentNode \-[IDE ...
- 关于使用FusionCharts生成图表时出现invalid xml data错误提示的解决方法
FusionCharts的确功能是够强大的.收集的功能估计更强大.在初次使用时,对着手册,一步一步操作,就是生成图表工具不成功.一直报"Invalid xml data"错误.后面 ...
- PHP 笔记一(systax/variables/echo/print/Data Type)
PHP stands for "Hypertext Preprocessor" ,it is a server scripting language. What Can PHP D ...
- JAVA 1.2(原生数据类型 Primitive Data Type)
1. Java的数据类型分为2类 >> 原生数据类型(primitive data type) >> 引用数据类型(reference data type) 3. 常量和变量 ...
- salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解
建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schema Builder查看表结构以及多表之间的关联关系,可以登录后点击setup在左侧搜索框输入schema ...
- The conversion of a varchar data type to a datetime data type resulted in an out-of-range value
刚刚有在程序中,传递一个空值至MS SQL Server数据库,这个值的数据类型为DATETIME执行时,它却发生了如标题提示的异常:The conversion of a varchar data ...
- WCF服务接口多,客户端在引用时出错!报WCF The maximum nametable character count quota (16384) has been exceeded while reading XML data错误
WCF服务接口多,客户端在引用时出错!报WCF The maximum nametable character count quota (16384) has been exceeded while ...
随机推荐
- CYQ.Data 轻量数据层之路 优雅V1.4 现世 附API帮助文档(九)
继上一版本V1.3版本发布到现在,时隔N天了:[V1.3版本开源见:CYQ.Data 轻量数据层之路 华丽V1.3版本 框架开源] N天的时间,根据各路网友的反映及自身的想法,继续修改优化着本框架,力 ...
- .htaccess绑定网站主目录的方法
用过cpanel的基本都会知道要把自己的服务器脚本传到public_htmk这个文件夹下,这个就是整个网站的主目录,普通的Apache服务器可以用下面的代码来实现这种效果 RewriteEngine ...
- mysql5.6主从参数详解
mysql5.6的主从相当的不错,增加了不少参数,提升了主从同步的安全和效率,以下是mysql5.6主从参数详解. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- 在JavaScript和C#中获得referer
1. JavaScript /** * 获取HTTP请求的Referer * @ishost 布尔类型 Referer为空时是否返回Host(网站首页地址) */ function get_http_ ...
- MySQL创建和修改数据库语法
1.创建数据库语法: CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification [, create_spe ...
- DOS命令:IIS安装与卸载
//IIS7完全安装 start /w pkgmgr /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticCont ...
- 烂泥:使用snmpwalk采集设备的OID信息
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 打算开始学习有关监控方面的知识,但是现在很多监控系统都是根据SNMP进行的.而SNMP监控的性能指标很多都是通过snmpwalk采集设备的OID信息得到 ...
- hadoop2.6---windows下开发环境搭建
一.准备插件 1.自己编译 1.1 安装Ant 官网下载Ant,apache-ant-1.9.6-bin.zip 配置环境变量,新建ANT_HOME,值是E:\apache-ant-1.9.6:PAT ...
- 2014 UESTC暑前集训搜索专题解题报告
A.解救小Q BFS.每次到达一个状态时看是否是在传送阵的一点上,是则传送到另一点即可. 代码: #include <iostream> #include <cstdio> # ...
- POJ 1724 ROADS【最短路/搜索/DP】
一道写法多样的题,很具有启发性. 具体参考:http://www.cnblogs.com/scau20110726/archive/2013/04/28/3050178.html http://blo ...