簡體   English   中英

在SQL Server的XML列中搜索“ |”管道符號

[英]Searching for “|” pipe symbol in XML column in SQL server

我正在使用這樣的腳本來查找“ |” XML列中的符號無論出現在何處。 我知道那里有管道,但以下查詢給了我空結果

SELECT TOP 100 *
FROM 
    [DB].[dbo].[InputData]
WHERE 
    Content.exist('//.[text() = "|"]') = 1
    AND DataFileId = '75d48aed6327'

我究竟做錯了什么? 這是Content列的xml Content

<CLAIM version="native">
   <INPUT>
      <HEADER BIRTH_DT="1/1/1941">
         <DIAG_CODES>
            <DX CODE="7234" />
         </DIAG_CODES>
         <CON_CODES>
            <CON_CODE VALUE="M0" />
         </CON_CODES>
         <VAL_CODES>
            <VAL_CODE CODE="A2" AMT="604.03" />
         </VAL_CODES>
      </HEADER>
</CLAIM>

嗨,您正在尋找答案,並在這里找到了答案https://stackoverflow.com/a/11738172/1692632

DECLARE @xmlTable TABLE (xmlData XML)

INSERT INTO @xmlTable SELECT N'
<CLAIM version="native">
      <HEADER BIRTH_DT="1/1/1941">
         <DIAG_CODES>
            <DX CODE="7234" />
         </DIAG_CODES>
         <CON_CODES>
            <CON_CODE VALUE="M0" />
         </CON_CODES>
         <VAL_CODES>
            <VAL_CODE CODE="A2" AMT="604.03" />
         </VAL_CODES>
      </HEADER>
</CLAIM>
'
INSERT INTO @xmlTable SELECT N'
<CLAIM version="native">
      <HEADER BIRTH_DT="1/1/1941">
         <DIAG_CODES>
            <DX CODE="72|34" />
         </DIAG_CODES>
         <CON_CODES>
            <CON_CODE VALUE="M0" />
         </CON_CODES>
         <VAL_CODES>
            <VAL_CODE CODE="A2" AMT="604.03" />
         </VAL_CODES>
      </HEADER>
</CLAIM>
'

SELECT T.*
FROM @xmlTable AS T
CROSS APPLY T.xmlData.nodes('//@*') as tx(r)
WHERE tx.r.value('contains((.),"|")','bit')=1

您也可以嘗試使用它(沒有重復項):

SELECT TOP 100 *
FROM 
    @xmlTable
WHERE 
    xmlData.exist('//@*[contains(., "|")]') = 1
SELECT TOP 100 *
FROM [DB].[dbo].[InputData]
WHERE DataFileId = '75d48aed6327'
and charindex('|',Content) > 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM