从SQL表中选择值 - 保留特定的列名(名称条件)

时间:2013-08-04 18:24:09

标签: sql-server

我有这样的SQL表:

create table [Tbl](
   [_Id] int Identity(1, 1),
   [_ProjectId] int,
   [Name] varchar(255),
   [Age] int
   ...
   Primary Key([_Id])
)

我需要选择所有值,而不是从“_”(_Id,_ProjectId)开头的列中选择所有值。我该怎么办?

(为了理解:我有很多这样的表和它们的特定列。我不知道所有列名称。)

3 个答案:

答案 0 :(得分:2)

您可以在查询的列列表中列出所需的列。请勿添加以_开头的列。

更新

您可以动态构建查询,例如,将表名作为参数的存储过程。使用sys.columns获取列名称并排除您不想要的列。

create procedure YourProcedure
  @TableName sysname
as

declare @SQL nvarchar(max)

set @SQL = '
select '+stuff((select ','+quotename(name)
                from sys.columns
                where object_id = object_id(@TableName) and
                      left(name, 1) <> '_'
                for xml path(''), type).value('text()[1]', 'sysname'),1,1,'')+'
from '+quotename(@TableName)

exec sp_executesql @SQL

SQL Fiddle

答案 1 :(得分:0)

您不能在列名称上使用通配符。

使用

选择全部
select * from table

或指定要以其全名选择的列

select name, age from table

答案 2 :(得分:0)

列出columns you want separated by commas ,而不是*

SELECT Name, Age, Col3, Col4, ColN FROM Tb1