Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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 如何通过删除空间查找标记值 declare@xxml='1〕 CRD001M-OPTIONI aaa WS-MENU-STACK1 WS-MENU-STACK2 WS-MENU-STACK3 WS-MENU-STACK4 WS-MENU-STACK5 WS-MENU-STACK6 WS-MENU-STACK7 WS-MENU-STACK8 WS-MENU-STACK9 WS-MENU-STACK10 WS-MENU-STACK-TALLING中的计数 '_Sql_Sql Server_Xml_Xml Parsing_Xml Serialization - Fatal编程技术网

Sql 如何通过删除空间查找标记值 declare@xxml='1〕 CRD001M-OPTIONI aaa WS-MENU-STACK1 WS-MENU-STACK2 WS-MENU-STACK3 WS-MENU-STACK4 WS-MENU-STACK5 WS-MENU-STACK6 WS-MENU-STACK7 WS-MENU-STACK8 WS-MENU-STACK9 WS-MENU-STACK10 WS-MENU-STACK-TALLING中的计数 '

Sql 如何通过删除空间查找标记值 declare@xxml='1〕 CRD001M-OPTIONI aaa WS-MENU-STACK1 WS-MENU-STACK2 WS-MENU-STACK3 WS-MENU-STACK4 WS-MENU-STACK5 WS-MENU-STACK6 WS-MENU-STACK7 WS-MENU-STACK8 WS-MENU-STACK9 WS-MENU-STACK10 WS-MENU-STACK-TALLING中的计数 ',sql,sql-server,xml,xml-parsing,xml-serialization,Sql,Sql Server,Xml,Xml Parsing,Xml Serialization,在上面的XML标记中,标记具有按空格分隔的值 我正在努力使下面的字符串如下 declare @x xml = '<XML> <UNSTRING STATEMENTNUMBER="48515"> <STRING>CRD001M-OPTIONI</STRING> <DELIMITERS> <DELIMITER>aaa</DELIMITER>

在上面的XML标记中,标记具有按空格分隔的值 我正在努力使下面的字符串如下

declare @x xml = '<XML> <UNSTRING STATEMENTNUMBER="48515">
          <STRING>CRD001M-OPTIONI</STRING>
          <DELIMITERS>
            <DELIMITER>aaa</DELIMITER>
          </DELIMITERS>
          <SUBSTRINGS>WS-MENU-STACK1 WS-MENU-STACK2 WS-MENU-STACK3 WS-MENU-STACK4 WS-MENU-STACK5 WS-MENU-STACK6 WS-MENU-STACK7 WS-MENU-STACK8 WS-MENU-STACK9 WS-MENU-STACK10 TALLYING IN WS-MENU-STACK-TALLY</SUBSTRINGS>
          <DELIMITERSFOUND>
            <DELIMITER>
            </DELIMITER>
          </DELIMITERSFOUND>
          <INDICES>
            <INDEX>
            </INDEX>
          </INDICES>
          <POINTER>
          </POINTER>
          <TALLYING>
          </TALLYING>
          <ONOVERFLOW>
          </ONOVERFLOW>
        </UNSTRING></XML>'
declare@xxml='1〕
CRD001M-OPTIONI
aaa
WS-MENU-STACK1
WS-MENU-STACK2
WS-MENU-STACK3
WS-MENU-STACK4
WS-MENU-STACK5
WS-MENU-STACK6
WS-MENU-STACK7
WS-MENU-STACK8
WS-MENU-STACK9
WS-MENU-STACK10
理货
在里面
WS-MENU-STACK-TALLY
'

请在此帮助我如何通过替换或其他方式解决问题 我使用了replace函数,但无法找到值
在这里,
标记值按空格分隔,因此请查找每个值在

之间,使用以下查询并享受其结果:

declare @x xml = '<XML> <UNSTRING STATEMENTNUMBER="48515">
          <STRING>CRD001M-OPTIONI</STRING>
          <DELIMITERS>
            <DELIMITER>aaa</DELIMITER>
          </DELIMITERS>
            <SUBSTRINGS>WS-MENU-STACK1</SUBSTRINGS>
            <SUBSTRINGS>WS-MENU-STACK2</SUBSTRINGS>
            <SUBSTRINGS>WS-MENU-STACK3</SUBSTRINGS>
            <SUBSTRINGS>WS-MENU-STACK4</SUBSTRINGS>
            <SUBSTRINGS>WS-MENU-STACK5</SUBSTRINGS>
            <SUBSTRINGS>WS-MENU-STACK6</SUBSTRINGS>
            <SUBSTRINGS>WS-MENU-STACK7</SUBSTRINGS>
            <SUBSTRINGS>WS-MENU-STACK8</SUBSTRINGS>
            <SUBSTRINGS>WS-MENU-STACK9</SUBSTRINGS>
            <SUBSTRINGS>WS-MENU-STACK10</SUBSTRINGS>
            <SUBSTRINGS>TALLYING</SUBSTRINGS>
            <SUBSTRINGS>IN</SUBSTRINGS>
            <SUBSTRINGS>WS-MENU-STACK-TALLY</SUBSTRINGS>
          <DELIMITERSFOUND>
            <DELIMITER>
            </DELIMITER>
          </DELIMITERSFOUND>
          <INDICES>
            <INDEX>
            </INDEX>
          </INDICES>
          <POINTER>
          </POINTER>
          <TALLYING>
          </TALLYING>
          <ONOVERFLOW>
          </ONOVERFLOW>
        </UNSTRING></XML>'
declare@xxml='1〕
CRD001M-OPTIONI
aaa
WS-MENU-STACK1 WS-MENU-STACK2 WS-MENU-STACK3 WS-MENU-STACK4 WS-MENU-STACK5 WS-MENU-STACK6 WS-MENU-STACK7 WS-MENU-STACK8 WS-MENU-STACK9 WS-MENU-STACK10 WS-MENU-STACK-TALLING中的计数
'
声明@T NVARCHAR(最大)=强制转换(@X为NVARCHAR(最大))
选择演员阵容(
替换(@T,
“+D.值(”,“VARCHAR(最大值)”+”,
''+替换(D.值('.'','VARCHAR(最大值)'','','')+''
)
(作为XML)
从@x.nodes('/XML/UNSTRING/substring')x(D)
declare @x xml = '<XML> <UNSTRING STATEMENTNUMBER="48515">
          <STRING>CRD001M-OPTIONI</STRING>
          <DELIMITERS>
            <DELIMITER>aaa</DELIMITER>
          </DELIMITERS>
          <SUBSTRINGS>WS-MENU-STACK1 WS-MENU-STACK2 WS-MENU-STACK3 WS-MENU-STACK4 WS-MENU-STACK5 WS-MENU-STACK6 WS-MENU-STACK7 WS-MENU-STACK8 WS-MENU-STACK9 WS-MENU-STACK10 TALLYING IN WS-MENU-STACK-TALLY</SUBSTRINGS>
          <DELIMITERSFOUND>
            <DELIMITER>
            </DELIMITER>
          </DELIMITERSFOUND>
          <INDICES>
            <INDEX>
            </INDEX>
          </INDICES>
          <POINTER>
          </POINTER>
          <TALLYING>
          </TALLYING>
          <ONOVERFLOW>
          </ONOVERFLOW>
        </UNSTRING></XML>'

DECLARE @T NVARCHAR(MAX) = CAST(@X AS NVARCHAR(MAX))
SELECT CAST(
            REPLACE(@T,
                    '<SUBSTRINGS>'+D.value('.','VARCHAR(max)')+'</SUBSTRINGS>',
                    '<SUBSTRINGS>'+REPLACE(D.value('.','VARCHAR(max)'),' ','</SUBSTRINGS><SUBSTRINGS>')+'</SUBSTRINGS>'
                    )
        AS XML)
FROM @x.nodes('/XML/UNSTRING/SUBSTRINGS') X(D)