SQL server XSD SimpleType xs: list als Tabelle?

SQL-server hat Unterstützung für XML, aber ich kann nicht herausfinden, wie man es mit dem List-Typ zu arbeiten

<?xml version="1.0" encoding="utf-16"?> <xsd:schema id="XMLSchema1" targetNamespace="http://tempuri.org/XMLSchema1.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema1.xsd" xmlns:mstns="http://tempuri.org/XMLSchema1.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:simpleType name="valuelist"> <xsd:list itemType="xsd:integer"/> </xsd:simpleType> <xsd:element name="a" type="valuelist"/> 

Ich kann nicht herausfinden, wie man diese Arbeit macht:

 DECLARE @p0 AS XML SET @p0 = '<a>123 124</a>' select ??? from @p0.??? 

Dies funktioniert gut, aber es hat einen Overhead von 6 character extra pro Nummer:

 DECLARE @p0 AS XML SET @p0 = '<b>123</b><b>124</b>' select Tcvalue('.', 'int') as Id from @p0.nodes('/b') AS T(c) 

Hier ist ein voll funktionsfähiges Beispiel:

 DECLARE @Schema XML SET @Schema = '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="a"> <xs:simpleType> <xs:list itemType="xs:int" /> </xs:simpleType> </xs:element> </xs:schema>' CREATE XML SCHEMA COLLECTION exampleschema as @Schema; GO DECLARE @XmlDoc AS XML(exampleschema) SET @XmlDoc = '<a>123 456 789</a>' select T.ref.value('.', 'int') from ( select [Xml]=@XmlDoc.query(' for $i in data(/a) return element temp { $i } ') ) A CROSS APPLY A.Xml.nodes('/temp') T(ref) DROP XML SCHEMA COLLECTION exampleschema GO 

Dies ist so ziemlich von diesem MSDN-Blog genommen, der den Ansatz demonstriert.