Masalah Anda:
-
Anda mencoba menggunakan keluaran
SelectChild
, yang bertipe XML, sebagai konten dari atribut@ListDirectChildren
. Anda tidak dapat menggunakan XML di tempat ini, oleh karena itu ditangani (dan diloloskan) sebagai teks biasa. Apakah Anda mencoba membuat semacam daftar turunan rekursif? -
Dalam kueri luar Anda, Anda melemparkan XML ke
VARCHAR(MAX)
(btw:selalu gunakanNVARCHAR
sehubungan dengan XML). Sekali lagi Anda akan memaksa mesin untuk memperlakukan teks ini sebagai teks dan karenanya menghindarinya. -
Anda mencoba menambahkan string "null" untuk mengekspresikan nilai yang hilang. Tetapi XML bekerja secara berbeda:a. Elemen tidak ada dalam XML sepenuhnya:Memintanya akan mengembalikan
NULL
, tidak apa-apa.b. Untuk beberapa aturan, Elemen harus ada, tetapi harus kosong:
<ListDirectChildren></ListDirectChildren>
atau<ListDirectChildren />
(yang artinya sama persis). Buat kueritext()
node node dan Anda mendapatkanNULL
, tidak apa-apa juga.c. Untuk beberapa aturan, Anda ingin menandai elemen sebagai
NULL
. GunakanXSINIL
Coba ini untuk variasi empty
dan null
:
DECLARE @x XML=
'<root>
<testempty1 />
<testempty2></testempty2>
</root>';
SELECT @x.value('(/root/testempty1)[1]','nvarchar(max)') AS testempty1_Content
,@x.value('(/root/testempty1/text())[1]','nvarchar(max)') AS testempty1_Text
,@x.value('(/root/testempty2)[1]','nvarchar(max)') AS testempty2_Content
,@x.value('(/root/testempty2/text())[1]','nvarchar(max)') AS testempty2_Text
,@x.value('(/root/NotExistingElement)[1]','nvarchar(max)') AS NotExistingElement_Content
,@x.value('(/root/NotExistingElement/text())[1]','nvarchar(max)') AS NotExistingElement_Text
Hasilnya:
Content Text
testempty1 "" NULL
testempty2 "" NULL
NotExistingElement NULL NULL
Coba ini untuk XSINIL
SELECT NULL AS test FOR XML RAW, ELEMENTS XSINIL
untuk mendapatkan ini
<row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<test xsi:nil="true" />
</row>
Saran saya:
Pertanyaan ini
semoga terpecahkan. Silakan mulai pertanyaan baru di mana Anda menambahkan lebih banyak data ke skenario sampel Anda untuk mencerminkan banyak anak, tempatkan tautan ke pertanyaan ini dan nyatakan keluaran yang diharapkan (seperti apa tampilan XML).