2012-11-26 52 views
-1

我需要第一次爲xml列子字符串。以下是xml列的一行。我需要每個DRN的子字符串,日期,金額。有時在一行中可能有多個實例。我將如何子串這個?子字符串XML列

<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> 

謝謝。

+0

能否請您考慮返工你的問題更清晰,使用更精確的術語? –

+0

嗨,當然,我只需要例如從xml列中獲取數字:N00230000004816012012。但是我有DRN =數字可能會在同一行中出現多次的情況,我需要在報告中顯示這兩個數字。我不知道如何substring我的SQL查詢來獲取此。如果它只出現一次,我可以得到它。這是我第一次做這樣的子串。 – user1854183

回答

0

不要使用substring使用xml Data Type Methods

SQL Fiddle

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>') 

查詢1

select I.N.value('@DRN', 'varchar(50)') as DRN 
from YourTable as T 
    cross apply T.XMLColumn.nodes('/ITEMS/ITEM') as I(N) 

Results

|     DRN | 
------------------------- 
| N00230000004816012012 | 
+0

你是我的英雄!!!!!非常感謝。 – user1854183

+0

嗨,可能只是問一件事,我想看看檢查AMOUNT =「0」和日期=「201202020」我使用相同的語法嗎? – user1854183

+0

@ user1854183您只是將字段列表'I.N.value('@ AMOUNT','money')擴展爲Amount'等。 –