是否可以选择除了某一列以外的所有列?
这里是所有列的名称:id,name,address,age
SELECT id, name, address from TBLUser
我不想使用这个选择语句,因为我的表格列数彼此不同。
是否可以选择除了某一列以外的所有列?
这里是所有列的名称:id,name,address,age
SELECT id, name, address from TBLUser
我不想使用这个选择语句,因为我的表格列数彼此不同。
declare @cols varchar(max), @sql varchar(max)
SELECT @cols = STUFF
(
(
SELECT DISTINCT '], [' + name
FROM sys.columns
where object_id = (
select top 1 object_id from sys.objects
where name = 'TBLUser'
)
and name not in ('age')
FOR XML PATH('')
), 1, 2, ''
) + ']'
select @sql = 'select ' + @cols + ' from TBLUser'
exec (@sql)
SELECT * FROM sys.columns
WHERE Name <> N'Column To Exclude' and Object_ID = Object_ID(N'TBLUser')
'Column To Exclude'
替换为您的列名称。我们还要求object_id等于您提供的object_id。object_id是表示您想要从中过滤出一个列的表的数字。在这个操作中,表是TBLUser,在其他用途中,它会像这样:object_id(N'[dbo].[YourTable]')
,您将用自己的表名替换[YourTable]
。在sql*plus中,
一种方法是按以下方式禁用:
sql> column age noprint
sql> SELECT * from TBLUser
然后,您可以使用还原
sql>column age off
否则您必须使用DBMS_SQL包动态地执行。