我想创建sql查询,与msxml创建的完全相同。 例如,我有这个xml:
<COLUMN name="NAME" type="INTEGER" not_null="true" sub_key="2" fk_table="T_SOME_TABLE"
fk_column="FK_VALUE" fk_cardinality="1..n" fk_aggregate="false" dict_id="30" advanced="false"
uiname="Input type" project="SOME_PROJECT">
<INFO>
SOME INFO
</INFO>
</COLUMN>
我不知道它会创建什么查询,因为我不知道SQL查询中fk_cardinality fk_aggregate的结果是什么。
你能告诉我怎么看这个查询吗?
答案 0 :(得分:0)
你在这里:
declare @x XML='<COLUMN name="NAME" type="INTEGER" not_null="true" sub_key="2" fk_table="T_SOME_TABLE"
fk_column="FK_VALUE" fk_cardinality="1..n" fk_aggregate="false" dict_id="30" advanced="false"
uiname="Input type" project="SOME_PROJECT">
<INFO>
SOME INFO
</INFO>
</COLUMN>';
SELECT @x.value('/COLUMN[1]/@name','varchar(max)') AS [name]
,@x.value('/COLUMN[1]/@type','varchar(max)') AS [type]
,@x.value('/COLUMN[1]/@not_null','bit') AS [not_null]
,@x.value('/COLUMN[1]/@sub_key','int') AS [sub_key]
,@x.value('/COLUMN[1]/@fk_table','varchar(max)') AS [fk_table]
,@x.value('/COLUMN[1]/@fk_column','varchar(max)') AS [fk_column]
,@x.value('/COLUMN[1]/@fk_cardinality','varchar(max)') AS [fk_cardinality]
,@x.value('/COLUMN[1]/@fk_aggregate','bit') AS [fk_aggregate]
,@x.value('/COLUMN[1]/@dict_id','int') AS [dict_id]
,@x.value('/COLUMN[1]/@advanced','bit') AS [advanced]
,@x.value('/COLUMN[1]/@uiname','varchar(max)') AS [uiname]
,@x.value('/COLUMN[1]/@project','varchar(max)') AS [project]
,@x.value('/COLUMN[1]/INFO[1]','varchar(max)') AS [INFO]