在SQL Server中有条件地选择列

时间:2014-10-08 15:15:59

标签: sql sql-server sql-server-2012

我想选择其名称不包含Id的每一列

这就是我的尝试:

Select *
From Table_Name
Where Column_Name Like '%Id%'

解决方案是什么?

3 个答案:

答案 0 :(得分:0)

我认为你会想要使用INFORMATION_SCHEMA。

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Name Of Your Table, As A String'
AND COLUMN_NAME NOT LIKE '%Id%'

More on INFORMATION_SCHEMA from MSDN.

答案 1 :(得分:0)

你可以这样做。假设表为列id,value1,value2。您需要选择名称为value的列名。

CREATE TABLE [dbo].[tbl1](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [value1] [varchar](2) NULL,
    [value2] [varchar](4) NULL)


GO

create table  #tblcols (colname varchar(100))

insert into #tblcols
select Column_name from INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'tbl1'

delete from #tblcols where colname not like '%val%'
select * from #tblcols

declare @sql nvarchar(500)


SELECT @sql = COALESCE(@sql + ', ', ' ') +  colname FROM #tblcols


 set @sql = 'select ' + @sql + ' from tbl1'
 select @sql

 exec sp_executesql  @sql

 drop table  #tblcols

然后,使用动态SQL创建像select value1,value2 from tbl这样的sql语句。并使用EXEC SP_EXECUTESQL @SQL来获得结果。

答案 2 :(得分:-3)

试试这个:

select * from sys.columns where
name NOT like '%ID%'

sys.columns

select * from INFORMATION_SCHEMA.COLUMNS
where COLUMN_NAME NOT   like '%ID%'

INFORMATION_SCHEMA.COLUMNS