我有这样的SQL表:
create table [Tbl](
[_Id] int Identity(1, 1),
[_ProjectId] int,
[Name] varchar(255),
[Age] int
...
Primary Key([_Id])
)
我需要选择所有值,而不是从“_”(_Id,_ProjectId)开头的列中选择所有值。我该怎么办?
(为了理解:我有很多这样的表和它们的特定列。我不知道所有列名称。)
答案 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
答案 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