Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 将XML列作为子字符串_Sql Server 2008 - Fatal编程技术网

Sql server 2008 将XML列作为子字符串

Sql server 2008 将XML列作为子字符串,sql-server-2008,Sql Server 2008,我第一次需要给xml列添加子字符串。下面是xml列的一行。我需要根据DRN、日期、金额进行子字符串。有时一行中可能有多个实例。我将如何对其进行子串 <ITEMS><ITEM SEQ="0" INDNO="50814" DRN="N00230000004816012012" CR_GUID="FB64CD73-8048-4775-81F2-969AE2AB442C" DR_GUID="8025D121-E3B6-4479-A393-CDDC5BEB53C0" CR_ACC=""

我第一次需要给xml列添加子字符串。下面是xml列的一行。我需要根据DRN、日期、金额进行子字符串。有时一行中可能有多个实例。我将如何对其进行子串

<ITEMS><ITEM SEQ="0" INDNO="50814" DRN="N00230000004816012012" CR_GUID="FB64CD73-8048-4775-81F2-969AE2AB442C" DR_GUID="8025D121-E3B6-4479-A393-CDDC5BEB53C0" CR_ACC="" DR_ACC="" AMOUNT="0" DATE="20120202" /></ITEMS>


谢谢。

您不使用
子字符串
您使用

MS SQL Server 2008架构设置

create table YourTable
(
  XMLColumn xml
)

insert into YourTable values
('<ITEMS><ITEM SEQ="0" INDNO="50814" DRN="N00230000004816012012" CR_GUID="FB64CD73-8048-4775-81F2-969AE2AB442C" DR_GUID="8025D121-E3B6-4479-A393-CDDC5BEB53C0" CR_ACC="" DR_ACC="" AMOUNT="0" DATE="20120202" /></ITEMS>')
select I.N.value('@DRN', 'varchar(50)') as DRN
from YourTable as T
  cross apply T.XMLColumn.nodes('/ITEMS/ITEM') as I(N)
|                   DRN |
-------------------------
| N00230000004816012012 |

create table YourTable
(
  XMLColumn xml
)

insert into YourTable values
('<ITEMS><ITEM SEQ="0" INDNO="50814" DRN="N00230000004816012012" CR_GUID="FB64CD73-8048-4775-81F2-969AE2AB442C" DR_GUID="8025D121-E3B6-4479-A393-CDDC5BEB53C0" CR_ACC="" DR_ACC="" AMOUNT="0" DATE="20120202" /></ITEMS>')
select I.N.value('@DRN', 'varchar(50)') as DRN
from YourTable as T
  cross apply T.XMLColumn.nodes('/ITEMS/ITEM') as I(N)
|                   DRN |
-------------------------
| N00230000004816012012 |

你能考虑修改你的问题,使其更清楚,使用更精确的术语吗?当然,我只需要从XML列中获得例如:N90023、000、48、16012012。但我有一些实例,其中DRN=number可以在同一行中出现多次,并且我需要在报告中同时显示这两种情况。我不知道如何子字符串我的SQL查询得到这个。如果只发生一次,我就能得到它。这是我第一次做这样的子字符串。您好,可能还要问一件事,我想看看examle AMOUNT=“0”和Date=“201202020”是否使用相同的语法?@user1854183您只需将字段列表
i.N.value(“@AMOUNT”,“money”)扩展为AMOUNT
i.N.value(“@Date”,“Date”)扩展为Date