所以我试图从 等于 Payment method 的 SQL Server 表中选择每条记录,但我想要 的值代码>
So I am trying to select each record out of a SQL Server table that has a <FIELD> equal to Payment method but I want the value of the <NEWVALUE>. I can't seem to get anything even close to what I want. Any ideas?
http://sqlfiddle.com/#!3/7c0a0/1/0
(小提琴内容)
create table T1(ID int identity(1, 1), XMLFIELD xml)
insert into T1(XMLFIELD) values('<ITEMS>
<ITEM>
<PROCESS>True</PROCESS>
<FIELD>Amount</FIELD>
<NEWVALUE>100</NEWVALUE>
<ACTION>0</ACTION>
<FIELDKEY>AMOUNT</FIELDKEY>
<DATATYPE>4</DATATYPE>
</ITEM>
<ITEM>
<PROCESS>True</PROCESS>
<FIELD>Payment method</FIELD>
<NEWVALUE>Credit card</NEWVALUE>
<ACTION>0</ACTION>
<FIELDKEY>PAYMENTMETHODCODE</FIELDKEY>
<DATATYPE>1</DATATYPE>
</ITEM>
</ITEMS>')
insert into T1(XMLFIELD) values('<ITEMS>
<ITEM>
<PROCESS>True</PROCESS>
<FIELD>Amount</FIELD>
<NEWVALUE>25</NEWVALUE>
<ACTION>0</ACTION>
<FIELDKEY>AMOUNT</FIELDKEY>
<DATATYPE>4</DATATYPE>
</ITEM>
<ITEM>
<PROCESS>True</PROCESS>
<FIELD>Payment method</FIELD>
<NEWVALUE>Debit</NEWVALUE>
<ACTION>0</ACTION>
<FIELDKEY>PAYMENTMETHODCODE</FIELDKEY>
<DATATYPE>2</DATATYPE>
</ITEM>
</ITEMS>')
试试这个:
SELECT
ID,
NewValue = XItem.value('(NEWVALUE)[1]', 'varchar(50)')
FROM
T1
CROSS APPLY
XmlField.nodes('/ITEMS/ITEM') as XTbl(XItem)
WHERE
XItem.exist('FIELD[.="Payment method"]') = 1
这篇关于从 XML 字段中选择 XML 字段 = X的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
将每个子标记转换为具有多个分隔符的单列-SQLConverting Every Child Tags in to a Single Column with multiple Delimiters -SQL Server (3)(将每个子标记转换为具有多个分隔符的单列-SQ
如何从多个表创建视图?How can I create a view from more than one table?(如何从多个表创建视图?)
根据前一行内的计算值创建计算值Create calculated value based on calculated value inside previous row(根据前一行内的计算值创建计算值)
如何将表格的前两列堆叠成一列,但也仅将第三How do I stack the first two columns of a table into a single column, but also pair third column with the first column only?(如何将表格的前两列堆
递归 t-sql 查询Recursive t-sql query(递归 t-sql 查询)
将月份名称转换为日期/月份编号(问题和答案的组Convert Month Name to Date / Month Number (Combinations of Questions amp; Answers)(将月份名称转换为日期/月份编号(问题和答案的组合