क्या FOR XML PATH('xxx')
करता है परिणामसेट के लिए एक XML स्ट्रिंग बनाता है जो प्रत्येक पंक्ति को <xxx></xxx>
. में रखता है तत्व और पंक्ति के अंदर प्रत्येक कॉलम मान, उस कॉलम के नाम वाले तत्व में।
यदि पथ खाली है (अर्थात PATH('')
) यह एक्सएमएल पीढ़ी में पंक्ति तत्व को छोड़ देता है। यदि स्तंभ का कोई नाम नहीं है तो यह XML पीढ़ी में स्तंभ तत्व को छोड़ देता है। जब दोनों PATH खाली होते हैं और स्तंभों का कोई नाम नहीं होता है तो यह प्रभावी रूप से सभी पंक्तियों का एक स्ट्रिंग संयोजन बन जाता है।
प्रक्रिया में बेहतर अंतर्दृष्टि प्राप्त करने के लिए निम्नलिखित कथन चलाएँ:
-- Each row is in a <beta></beta> element
-- Each column in that row in a <alfa></alfa> element (the column name)
SELECT
alfa=','+TABLE_SCHEMA + '.' + TABLE_NAME
FROM
INFORMATION_SCHEMA.TABLES
FOR
XML PATH('beta');
-- Since the PATH is empty, the rows are not put inside an element
-- Each column in that row is in a <alfa></alfa> element (the column name)
SELECT
alfa=','+TABLE_SCHEMA + '.' + TABLE_NAME
FROM
INFORMATION_SCHEMA.TABLES
FOR
XML PATH('');
-- Since the PATH is empty, the rows are not put inside an element
-- Since the column has no name it is not put inside an element
SELECT
','+TABLE_SCHEMA + '.' + TABLE_NAME
FROM
INFORMATION_SCHEMA.TABLES
FOR
XML PATH('');
-- This uses the STUFF function to remove the leading comma to get a proper comma-seperated list
SELECT STUFF((
SELECT
','+TABLE_SCHEMA + '.' + TABLE_NAME
FROM
INFORMATION_SCHEMA.TABLES
FOR
XML PATH('')
),1,1,''
) AS comma_seperated_list;
अब मैं आपको यह पूछते हुए सुन रहा हूं:जब मैं किसी तालिका से केवल एक कॉलम का चयन करता हूं तो मैं कॉलम का नाम कैसे हटा सकता हूं। मेरी पसंद के क्रम में कई तरीके हैं:
- XQuery गुण:
SELECT [text()]=column_name ...
- कॉलम मान का चयन करने के लिए एक सबक्वेरी का उपयोग करें:
SELECT (SELECT column_name) ...
- कॉलम को उसके प्रकार के अनुसार कास्ट करें:
SELECT CAST(column_value AS <TYPE of the column>) ...
उदाहरण:
SELECT
[text()]=TABLE_NAME
FROM
INFORMATION_SCHEMA.TABLES
FOR
XML PATH('');
SELECT
(SELECT TABLE_NAME)
FROM
INFORMATION_SCHEMA.TABLES
FOR
XML PATH('');
SELECT
CAST(TABLE_NAME AS SYSNAME)
FROM
INFORMATION_SCHEMA.TABLES
FOR
XML PATH('');