XML เป็นโบนัส
เมื่อคุณเพิ่มสตริงที่ต่อกันคุณจะสูญเสีย "องค์ประกอบของพา ธ "
ตัวอย่างเช่นถ้าคุณทำสิ่งนี้:
SELECT t.type + '/' AS type
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML PATH('');
SELECT t.type + '/'
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML PATH('type');
คุณได้รับสิ่งนี้กลับมา:
<type>Green/</type>
<type>Blue/</type>
<type>Red/</type>
ชื่อคอลัมน์หรือนามแฝงทำหน้าที่เป็นองค์ประกอบของเส้นทาง
ตัวอย่างอื่น ๆ ที่อาจช่วยได้
การใช้ RAW, ELEMENTS
SELECT t.type + '/'
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML RAW, ELEMENTS;
SELECT t.type + '/' AS type
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML RAW, ELEMENTS;
ในตัวอย่างแรกคุณจะได้รับชื่อองค์ประกอบ "แถว" ทั่วไป แต่ในครั้งที่สองคุณจะได้รับแถว / ประเภท
เมื่อใช้RAW, TYPE
:
SELECT t.type + '/' AS type
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML RAW, TYPE;
SELECT t.type + '/'
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML RAW, TYPE;
การสืบค้นแรกส่งคืน valid-ish XML ที่สองส่งข้อผิดพลาดเนื่องจากองค์ประกอบพา ธ ไม่มีตัวระบุ
การใช้AUTO
ชื่อแทนตารางและชื่อคอลัมน์จะเปลี่ยนเป็นพา ธ :
SELECT type + '/' AS type
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML AUTO;
SELECT type
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML AUTO;
แต่ไม่มีนามแฝงคุณจะได้รับข้อผิดพลาดที่คล้ายกัน:
SELECT type + '/'
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML AUTO;
ฉันจะลองเป็นตัวอย่างFOR XML EXPLICIT
แต่มันจะไม่รับผิดชอบสำหรับฉันที่จะเริ่มดื่มตอนนี้