如何在sql中选择除某一列之外的所有列?

27 浏览
0 Comments

如何在sql中选择除某一列之外的所有列?

这个问题已经有了答案

可能是重复问题:

SQL exclude a column using SELECT * [except columnA] FROM tableA?

选择除了一个列以外的所有列是否可能?

这里是所有列名:id、name、address、age

SELECT id, name, address from TBLUser

我不想使用这个select语句,因为我的表的列数不同。

admin 更改状态以发布 2023年5月20日
0
0 Comments

如何这样做:

SELECT * FROM sys.columns 
WHERE Name <> N'Column To Exclude' and Object_ID = Object_ID(N'TBLUser')

这将返回除您想要排除的列之外的所有列。

详细说明:

根据 SQL Cheat Sheet 中的解释:

sys.columns 是系统表,用于维护数据库中列的信息。针对数据库中每个添加的列,都会在 sys.columns 表中创建一条记录。对于每个列,只有一条记录。

Name:列的名称。在表对象内部是唯一的。

Object_id:object_id 是表中存在列的唯一标识符。我们将使用此列将 sys.columns 与 sys.tables 连接起来,以便从不同表中获取列。

我们正在选择从 sys.columns 中获取所有结果,其中名称不等于您提供的任何内容,请将 'Column To Exclude' 替换为您的列名。我们还要求 object_id 等于您提供的 object_id。object_id 是表示要从中过滤出一列的表的编号。在此 ops 示例中,表是 TBLUser,而其他用途中则会像这样 object_id(N'[dbo].[YourTable]'),您将用自己的表名替换 [YourTable]

0
0 Comments
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)

的中文意思是:加粗字体的123。

0