我想将EC值拆分,然后将INSERT
拆分为SQL Server中的一个表,但是此ROW上的第一个UPDATE
。
我的XML标签:
<Relations mfid="SubjectMaj_My">
<Form EC="19" ETC="712" Value="temp1" />
<Form EC="1" ETC="712" Value="temp2" />
<Form EC="37" ETC="712" Value="temp3" />
</Relations>
当我SELECT
在我的桌子上时:
SELECT [SubjectMaj_My]
FROM AB_Warehouse.dbo.Maless_Letters
我得到这样的价值(其中一些只是一种标签形式,但有些可以超过一种标签形式!):
<Relations mfrid="SubjectMaj_My"><Form EC="6" ETC="712" Value="uy" Token="e29c2aeeb0a340818f460d47a7faa8a2" /></Relations>
<Relations mfrid="SubjectMaj_My"><Form EC="47" ETC="712" Value="gg" Token="e773c5a4949c4b639b41f4f49a120845" /></Relations>
<Relations mfrid="SubjectMaj_My"><Form EC="7" ETC="712" Value="aa" Token="87068cc61c2944a782fe6be9473f064c" /></Relations>
<Relations mfrid="SubjectMaj_My"><Form EC="47" ETC="712" Value="asdsa" Token="742ca91fbd77424799084fa0c56e63c7" /></Relations>
<Relations mfrid="SubjectMaj_My"><Form EC="6" ETC="712" Value="asdd" Token="8efbf5745d39459c8c23cf7bfc36bf75" /></Relations>
<Relations mfrid="SubjectMaj_My"><Form EC="26" ETC="712" Value="ff" Token="b74d6ab0ffa642be98cf7972c9f1041a" /></Relations>
<Relations mfid="SubjectMaj_My"><Form EC="19" ETC="712" Value="temp1" /><Form EC="1" ETC="712" Value="temp2" /><Form EC="37" ETC="712" Value="temp3" /></Relations>
答案 0 :(得分:1)
下次请阅读how to create an MCVE。
我不知道您的桌子,所以您必须对此进行调整,但是可以尝试一下:
SELECT l.SomeColumnToIdentifyTheRow
,frm.value(N'@EC',N'int') AS Form_EC
,frm.value(N'@ETC',N'int') AS Form_ETC
,frm.value(N'@Value',N'nvarchar(max)') AS Form_EC
FROM AB_Warehouse.dbo.Maless_Letters l
OUTER APPLY [SubjectMaj_My].nodes(N'/Relations/Form') A(frm);
这将从表中的每一行开始,并从每种XML中创建一个派生表。结合XML的方法APPLY
使用.nodes()
完成。
这将返回以行分隔的所有重复元素。从那里我们可以读取属性的值。