2012-06-04 62 views
0

有什麼辦法可以轉換一列,並且能夠引用所有其他列而不明確命名它們?SELECT的變化* - 除了那些明確引用的列以外的所有列

通常我會做到這一點:

SELECT 
     ,[Id] 
     ,[Name] 
     ,CONVERT(VARCHAR(10),[CreateDate], 104) as [CreateDate] 
    FROM Customers 

我可以在完美的世界裏做什麼是:

SELECT 
     * 
     ,CONVERT(VARCHAR(10),[CreateDate], 104) as [CreateDate] 
    FROM Customers 

其中*意味着沒有明確在查詢中規定的所有列。

是否有一個關鍵字,使人能夠做到這一點或有其他方式嗎?請記住,它必須在查詢中可行 - 無需更改表格,製作視圖,SP或其他內容。

回答

2

沒有編程的方式說「除了這一個所有列」,除非你想會根據您提供查詢列表從sys.columns建立動態的SQL(這將是非常難以導出列表動態地從查詢中引用列的引用,特別是在引入連接時,where子句等)。

但是,如果不輸入全部這些信息,就可以做到這一點。只需在對象資源管理器中展開您的表格,然後將「列」節點拖到查詢編輯器窗口中即可。現在只需從列表中刪除CreateDate列。

0

我喜歡做的事,以避免輸入字段的一長串是在編輯器中選擇表名稱,然後按下Alt + F1。這與鍵入「sp_help表」是一樣的。您將得到一個包含該表所有列名稱的結果集。我將該列表複製到編輯器中並添加逗號。

一個簡單的方法來使用搜索在所有行的末尾添加逗號並在編輯器替換:

  1. 只選擇與列名行。
  2. 選中「使用」並從下拉列表中選擇「正則表達式」。
  3. 在「查找內容」中輸入$(美元符號表示該行的結束)在
  4. 在「替換爲」類型,

這將逗號添加到每個選定行的末尾。

另一種方式是在對象資源管理器中的表上單擊右鍵,點擊「選擇頂部1000」選項,將在其他文本編輯器窗口中創建一個腳本你。

+1

這些都比將「Columns」節點拖到編輯器上看起來更乏味。 :-) –

+0

@AaronBertrand,你是對的,我不知道,你可以拖動列節點:)我學到新的東西每天! –

相關問題