I have a large number of columns in my table, like 20-30. I want to select all except 3-4 of the columns. Is there a way to to SELECT * EVERYTHING BUT COLUMNS (Address,Name etc...) FROM MyTable If not, then would such a functionality be useful ? 
            Asked
            
        
        
            Active
            
        
            Viewed 9,115 times
        
    0
            
            
         
    
    
        Steam
        
- 9,368
- 27
- 83
- 122
- 
                    2http://stackoverflow.com/questions/413819/select-except – mr.Reband Dec 19 '13 at 21:40
3 Answers
2
            
            
        --Just change table name and put NOT IN columns
 
   DECLARE @cols AS NVARCHAR(MAX),   @query  AS NVARCHAR(MAX)
   select @cols = STUFF((SELECT  N',' + QUOTENAME(c.name) 
   FROM sys.tables AS t
   INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
   WHERE t.name = 'tagCloudLibrary'
   and c.name not in ('langID')
        FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)')  ,1,1,'')
 set @query = N'SELECT ' + @cols + N' from tagCloudLibrary'
     execute sp_executesql @query;
 
    
    
        Valentin Petkov
        
- 1,570
- 18
- 23
- 
                    +1 With two notes: Instead of `WHERE t.name = 'tagCloudLibrary'` I would use `WHERE {t|c}.object_id = OBJECT_ID(N'dbo.tagCloudLibrary')` ... and `... from dbo.tagCloudLibrary`. – Bogdan Sahlean Dec 19 '13 at 22:03
- 
                    @Bogdan I actually wouldn't use `OBJECT_ID` - [it doesn't observe outer isolation semantics](http://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=432497) and also makes it much harder to reuse these types of queries across databases. Join to `sys.schemas` instead. – Aaron Bertrand Dec 19 '13 at 22:26
- 
                    @AaronBertrand Thanks for this Connect item. OBJECT_ID hasn't an easy task because it may be called with DB name (`SELECT OBJECT(N'DB1.dbo.Table1')`) and current session may have another DB active (ex: DB2; `USE DB2; SELECT OBJECT(N'DB1.dbo.Table1'))` + These DB may have different Isolation/Snapshot Isolation settings (DB1:RCSI & DB2/current session:SI). What should do OBJECT_ID in these scenarious ? – Bogdan Sahlean Dec 20 '13 at 05:24
- 
                    @Bogdan like I said, instead of relying on OBJECT_ID() *function* to identify an object by schema + table, you join to sys.schemas instead. – Aaron Bertrand Dec 20 '13 at 11:48
- 
                    Personally I will never use approach with embedded SQL for task like this... I don't understated why there are question like this to promote themselves? but for me to answer is just to keep myself in shape to write some code... – Valentin Petkov Dec 20 '13 at 16:32
2
            In SSMS, open Object Explorer, right-click on table -> "Script Table As" -> "SELECT To" -> "New Query Editor Window"
Delete the columns you don't want and run the query. It does all the typing for you.
 
    
    
        Anon
        
- 10,660
- 1
- 29
- 31
- 
                    I knew this, I guess it is the only simple way of doing what i want without any alteration to the database. I guess i could also do select top 1000 and remove the stuff i don't need. – Steam Dec 19 '13 at 23:02
1
            
            
        It may be best to just create a VIEW on that table, without the columns you don't want to see. Then you can SELECT * from the VIEW.
 
    
    
        BWS
        
- 3,786
- 18
- 25