DocumentID, MsgType,Comments,TotalSystem,ValidSystem, ServiceTag, SystemError
9S12800717039360004730Y487G42 1 FAILED 10 6 2CRDMH1 00144470635776..
.....
其它的数据只有ServiceTag, SystemError不同,取XML的值
一共4条
解决方案 »
- 求解!!vc++与SQL SERVER EXPRESS版的连接问题!
- 不用数据库之间操作问题?请邹建等进来(急)
- 请教关于存储过程的参数输入
- 50分 占用你一分钟时间
- 列的纵横转化,3212650比数据,第一次执2分37秒,第二次执行2分26秒,第三次执行2分36秒,第四次2分36秒……还可以优化吗?
- SQL这样的分类汇该怎么做?
- 求组新建一个表不能访问和添加记录?
- 这是一段商品分类实现的源代码?有高手能从里面看出存储程序“cp_GetFeaturedProducts“ 写的是什么吗?
- 我的表中有将近30个字段,我想用select语句列出除去“照片”字段的所有字段,如果用以前的方法语句将非常长,如何用最简单的语句实现呢?
- VC ADO 编程:插入一条纪录后,怎么的到刚刚插入纪录的ID值(该ID是自动增加的)?
- 仓库管理系统公司名称
- 请问,如何在SQL语句中显示进行该次操作的ip地址或者计算机名啊??(急,谢谢)
SET @doc='
<QDS_ACK>
<SENDERID>O2_Q_EMEA</SENDERID>
<RECEIVERID>QCI</RECEIVERID>
<DOCUMENTID>9S12800717039360004730Y487G42</DOCUMENTID>
<MSG_TYPE>1</MSG_TYPE>
<REPORT>
<SUMMARY>
<ACK_ACTION>R</ACK_ACTION>
<COMMENTS>FAILED : INVALID SVCTAG DETAILS</COMMENTS>
<TOTAL_SYSTEMS>10</TOTAL_SYSTEMS>
<VALID_SYSTEMS>6</VALID_SYSTEMS>
<INVALID_SYSTEMS>4</INVALID_SYSTEMS>
</SUMMARY>
<DETAIL>
<SYSTEM_MSG>
<SERVICE_TAG>2CRDMH1</SERVICE_TAG>
<SYSTEM_ERRORS>
<SYSTEM_ERROR>00144470635776 : DUPLICATE COASTRING ACROSS ASBUILTS</SYSTEM_ERROR>
</SYSTEM_ERRORS>
</SYSTEM_MSG>
<SYSTEM_MSG>
<SERVICE_TAG>G8RDMH1</SERVICE_TAG>
<SYSTEM_ERRORS>
<SYSTEM_ERROR>00144470635773 : DUPLICATE COASTRING ACROSS ASBUILTS</SYSTEM_ERROR>
</SYSTEM_ERRORS>
</SYSTEM_MSG>
<SYSTEM_MSG>
<SERVICE_TAG>4BRDMH1</SERVICE_TAG>
<SYSTEM_ERRORS>
<SYSTEM_ERROR>00144470635497 : DUPLICATE COASTRING ACROSS ASBUILTS</SYSTEM_ERROR>
</SYSTEM_ERRORS>
</SYSTEM_MSG>
<SYSTEM_MSG>
<SERVICE_TAG>H7RDMH1</SERVICE_TAG>
<SYSTEM_ERRORS>
<SYSTEM_ERROR>00144470635936 : DUPLICATE COASTRING ACROSS ASBUILTS</SYSTEM_ERROR>
</SYSTEM_ERRORS>
</SYSTEM_MSG>
</DETAIL>
</REPORT>
</QDS_ACK>
'SELECT
A.x.value('(./../../../DOCUMENTID)[1]','varchar(20)') AS DocumentID,
A.x.value('(./../../../MSG_TYPE)[1]','varchar(10)') AS MSG_TYPE,
A.x.value('(./../../SUMMARY/COMMENTS)[1]','varchar(20)') AS COMMENTS,
A.x.value('(./../../SUMMARY/TOTAL_SYSTEMS)[1]','varchar(20)') AS TOTAL_SYSTEMS,
A.x.value('(./../../SUMMARY/VALID_SYSTEMS)[1]','varchar(20)') AS VALID_SYSTEMS,
A.x.value('(./SERVICE_TAG)[1]','varchar(20)') AS SERVICE_TAG,
A.x.value('(./SYSTEM_ERRORS/SYSTEM_ERROR)[1]','varchar(20)') AS SYSTEM_ERROR
FROM @doc.nodes('//SYSTEM_MSG') AS A(x)/*
DocumentID MSG_TYPE COMMENTS TOTAL_SYSTEMS VALID_SYSTEMS SERVICE_TAG SYSTEM_ERROR
-------------------- ---------- -------------------- -------------------- -------------------- -------------------- --------------------
9S128007170393600047 1 FAILED : INVALID SVC 10 6 2CRDMH1 00144470635776 : DUP
9S128007170393600047 1 FAILED : INVALID SVC 10 6 G8RDMH1 00144470635773 : DUP
9S128007170393600047 1 FAILED : INVALID SVC 10 6 4BRDMH1 00144470635497 : DUP
9S128007170393600047 1 FAILED : INVALID SVC 10 6 H7RDMH1 00144470635936 : DUP(4 行受影响)
*/
SET @doc='
<QDS_ACK>
<SENDERID>O2_Q_EMEA</SENDERID>
<RECEIVERID>QCI</RECEIVERID>
<DOCUMENTID>9S12800717039360004730Y487G42</DOCUMENTID>
<MSG_TYPE>1</MSG_TYPE>
<REPORT>
<SUMMARY>
<ACK_ACTION>R</ACK_ACTION>
<COMMENTS>FAILED : INVALID SVCTAG DETAILS</COMMENTS>
<TOTAL_SYSTEMS>10</TOTAL_SYSTEMS>
<VALID_SYSTEMS>6</VALID_SYSTEMS>
<INVALID_SYSTEMS>4</INVALID_SYSTEMS>
</SUMMARY>
<DETAIL>
<SYSTEM_MSG>
<SERVICE_TAG>2CRDMH1</SERVICE_TAG>
<SYSTEM_ERRORS>
<SYSTEM_ERROR>00144470635776 : DUPLICATE COASTRING ACROSS ASBUILTS</SYSTEM_ERROR>
</SYSTEM_ERRORS>
</SYSTEM_MSG>
<SYSTEM_MSG>
<SERVICE_TAG>G8RDMH1</SERVICE_TAG>
<SYSTEM_ERRORS>
<SYSTEM_ERROR>00144470635773 : DUPLICATE COASTRING ACROSS ASBUILTS</SYSTEM_ERROR>
</SYSTEM_ERRORS>
</SYSTEM_MSG>
<SYSTEM_MSG>
<SERVICE_TAG>4BRDMH1</SERVICE_TAG>
<SYSTEM_ERRORS>
<SYSTEM_ERROR>00144470635497 : DUPLICATE COASTRING ACROSS ASBUILTS</SYSTEM_ERROR>
</SYSTEM_ERRORS>
</SYSTEM_MSG>
<SYSTEM_MSG>
<SERVICE_TAG>H7RDMH1</SERVICE_TAG>
<SYSTEM_ERRORS>
<SYSTEM_ERROR>00144470635936 : DUPLICATE COASTRING ACROSS ASBUILTS</SYSTEM_ERROR>
</SYSTEM_ERRORS>
</SYSTEM_MSG>
</DETAIL>
</REPORT>
</QDS_ACK>
';WITH Liang AS
(
SELECT
A.x.value('(./../../../DOCUMENTID)[1]','varchar(50)') AS DocumentID,
A.x.value('(./../../../MSG_TYPE)[1]','int') AS MSG_TYPE,
A.x.value('(./../../SUMMARY/COMMENTS)[1]','varchar(50)') AS COMMENTS,
A.x.value('(./../../SUMMARY/TOTAL_SYSTEMS)[1]','int') AS TOTAL_SYSTEMS,
A.x.value('(./../../SUMMARY/VALID_SYSTEMS)[1]','int') AS VALID_SYSTEMS,
A.x.value('(./SERVICE_TAG)[1]','varchar(50)') AS SERVICE_TAG,
A.x.value('(./SYSTEM_ERRORS/SYSTEM_ERROR)[1]','varchar(50)') AS SYSTEM_ERROR
FROM @doc.nodes('//SYSTEM_MSG') AS A(x)
)
SELECT
DocumentID,
MSG_TYPE,
RTRIM(LEFT(COMMENTS,CHARINDEX(':',COMMENTS)-1)) AS COMMENTS,
TOTAL_SYSTEMS,
VALID_SYSTEMS,
SERVICE_TAG,
RTRIM(LEFT(SYSTEM_ERROR,CHARINDEX(':',SYSTEM_ERROR)-1)) AS SYSTEM_ERROR
FROM Liang/*
DocumentID MSG_TYPE COMMENTS TOTAL_SYSTEMS VALID_SYSTEMS SERVICE_TAG SYSTEM_ERROR
-------------------------------------------------- ----------- -------------------------------------------------- ------------- ------------- -------------------------------------------------- --------------------------------------------------
9S12800717039360004730Y487G42 1 FAILED 10 6 2CRDMH1 00144470635776
9S12800717039360004730Y487G42 1 FAILED 10 6 G8RDMH1 00144470635773
9S12800717039360004730Y487G42 1 FAILED 10 6 4BRDMH1 00144470635497
9S12800717039360004730Y487G42 1 FAILED 10 6 H7RDMH1 00144470635936(4 行受影响)
*/
A.x.value('(./../../../DOCUMENTID)[1]','varchar(50)') 小梁这个是什么意思啊?
找父的父的父的DOCUMENTID节点呀.
保证只返回一个值,
因为xml的value方法需要确保只返回一个值,否则将产生静态错误.
@doc.nodes('//SYSTEM_MSG') 为什么用两个斜杠?
如果从跟开始写是这样的吗?
SELECT
A.x.value('(QDS_ACK/DOCUMENTID)[1]','varchar(20)') AS DocumentID
FROM @doc.nodes('QDS_ACK') AS A(x)
可是为什么是空值啊?
如果从跟开始写是这样的吗?
SELECT
A.x.value('(QDS_ACK/DOCUMENTID)[1]','varchar(20)') AS DocumentID
FROM @doc.nodes('QDS_ACK') AS A(x)
可是为什么是空值啊?