;WITH XMLNAMESPACES ('xxx1'AS heads,'xxx2'AS nodes
)--Return xml: <Type>type1</Type>SELECT tb.xml_message.Query(N'/nodes:Node/nodes:Type
')as res
FORM tb
--Return value: type1SELECT tb.xml_message.Query(N'/nodes:Node/nodes:Type/text()
')as res
FORM tb
SELECT tb.xml_message.value(N'(/nodes:Node/nodes:Type/text())[1]
',N'varchar(20)')as res
FORM tb
Where
;WITH XMLNAMESPACES ('xxx1'AS heads,'xxx2'AS nodes
)SELECT*FROM tb WHERE xml_message.value(N'(/nodes:Node/nodes:Type/text())[1]
',N'varchar(20)')='type1'
Query multiple value from xml
;WITH XMLNAMESPACES ('xxx1'AS heads,'xxx2'AS nodes
)--Return: type1 name2-- type2 name2SELECT xml_nodes.query(N'/nodes:Type/text()')astype,xml_nodes.query(N'/nodes:Name/text()')as name
FROM(SELECT T.C.query(N'.')as xml_nodes FROM tb
CROSSAPPLY xml_message.nodes(N'/nodes:Node')AS T(C))
Tips:
--This will return null without child selectSELECT T.C.query(N'/nodes:Name/text()')as xml_nodes FROM tb
CROSSAPPLY xml_message.nodes(N'/nodes:Node')AS T(C)