可能重复:
SQL exclude a column using SELECT * [except columnA] FROM tableA?
是否可以使用SQL Server从select * from table
语句中排除列?
我需要这个,这是我唯一的选择,除了解析原始SQL字符串以获取所需的字段名称(我真的不想这样做)。
只是大胆。 查询完成后,我无法访问表格所需的字段列表,但我确实知道哪个字段不需要。这是复杂的多部分查询的一部分。
肯定必须有某种方式,即使它是“hackish”,如使用表变量或视图
我的另一个选择是重新排序列。我的问题是使用ExecuteScalar
SQL函数获取第一行和第一列。
修改
我无法添加答案,因为现在已经关闭,但我最终这样做的方式是这样的:
;with results_cte as (
select (calculation) as calculated_column, * from table
)
select * into #temptable from results_cte
where calculated_column<10 /*or whatever*/
alter table #temptable
drop column calculated_column
select * from #temptable
drop table #temptable
答案 0 :(得分:1)
不。您必须手动构建语句或只选择*。
答案 1 :(得分:0)
没有
相反,您可以检查syscolumns
以获取所有字段名称,或者(可能)SELECT *
并忽略该列。
答案 2 :(得分:0)
如果使用动态SQL,则可以从有关表或视图的元数据(INFORMATION_SCHEMA.COLUMNS)生成查询,并以这种方式排除列。我做了很多工作来生成触发器或视图。
但是SQL语言中没有任何内容支持这一点。
答案 3 :(得分:0)
处理此问题的最佳方法是select *
,然后不要将排除列显示给前端的用户。正如其他人所指出的那样,SQL没有直接执行all-columns-except结构的能力。