我正在尝试使用jQuery
显示SQL Server表中的列和行我选择了SELECT * FROM table1
的表格,所以我不知道列标题是什么,除非我将它们与sys.columns
分开。 select语句的输出也以XML格式输出以对抗XSS。
我如何选择列
SELECT c.column_id, c.name, y.system_type_id, y.name AS system_type_name
FROM sys.columns AS c
JOIN sys.types AS y ON c.system_type_id = y.system_type_id
JOIN sys.tables AS t ON c.object_id = t.object_id
WHERE y.name NOT LIKE 'sysname'
AND t.object_id = '1234567890'
FOR XML RAW, TYPE, ROOT('rows');
示例XML输出
<rows>
<row column_id="1" name="id" system_type_id="56" system_type_name="int" />
<row column_id="5" name="added" system_type_id="61" system_type_name="datetime" />
<row column_id="4" name="allowlogin" system_type_id="104" system_type_name="bit" />
<row column_id="3" name="pw" system_type_id="165" system_type_name="varbinary" />
<row column_id="2" name="un" system_type_id="231" system_type_name="nvarchar" />
</rows>
我如何选择行
SELECT * FROM table1 FOR XML RAW, TYPE, ROOT('rows')
我无法弄清楚(可能是因为它已经晚了)如何做到这一点。有什么想法吗?
答案 0 :(得分:0)
如果我理解正确,您希望列名在单个字符串中,如下所示:field1,field2,field3 ......
如果是这种情况,你可以这样做:
SELECT STUFF((SELECT ','+name FROM YourDatabaseName.sys.columns WHERE object_id = OBJECT_ID('YourTableName') ORDER BY column_id FOR XML PATH('')),1,1,'')
希望有所帮助!