我怎么知道像xxxx中的select *这样的sql脚本的列是什么?

时间:2015-03-10 22:03:58

标签: c# sql sql-server select

例如,我得到一个自定义报告,然后用户可以编写任何sql脚本。

在这种情况下是Select * FROM table_x

我怎么知道这个脚本的列是什么?

2 个答案:

答案 0 :(得分:1)

如果您在程序级别担心这个问题,那么您的ORM可能会告诉您什么时候将它们拉下来。如果您使用的是经典的ADO.net,则可以查看结果(可能)DataTable列。

如果您在SQL Server级别担心这一点,您必须找出表格的名称(例如,通过查找FROM之后的下一个单词,但是&{ #39;在我看来很粗略),那么你可以这样做:

SELECT *
FROM Information_Schema.Columns
WHERE TABLE_NAME = 'ThatTableName'

这会告诉你一些关于他们的信息,包括他们的COLUMN_NAME

答案 1 :(得分:1)

在SQL Server 2012及更高版本中,您可以使用sp_describe_first_result_set

EXEC sp_describe_first_result_set @tsql = N'SELECT * FROM table_x;';