我有以下查詢:SQL使用上多列的一個REPLACE
SELECT * FROM MailingList
大約有20多個列在郵件列表表,一個被稱爲地址。此列有一些包含逗號的字段,我需要將其刪除。所以,我在我的查詢更新爲:
SELECT REPLACE(Address, ',', '') AS Address, * FROM MailingList
但現在我有兩個地址列。有沒有辦法只顯示一個地址列,而仍然使用通配符(*)爲所有其他列?
我有以下查詢:SQL使用上多列的一個REPLACE
SELECT * FROM MailingList
大約有20多個列在郵件列表表,一個被稱爲地址。此列有一些包含逗號的字段,我需要將其刪除。所以,我在我的查詢更新爲:
SELECT REPLACE(Address, ',', '') AS Address, * FROM MailingList
但現在我有兩個地址列。有沒有辦法只顯示一個地址列,而仍然使用通配符(*)爲所有其他列?
沒有辦法做到這一點,儘管列出你想明確的列是一個好主意。
你就可以欺騙如下查詢:
的cloumns
- 獲取數據到一個臨時表
- 丟棄不需要的
- 得到的結果和下降臨時表
SELECT *, REPLACE(Address, ',', '') AS Address2
INTO #TempTable
FROM MailingList
ALTER TABLE #TempTable
DROP COLUMN [Address]
SELECT * FROM #TempTable
DROP TABLE #TempTable
我同意陰影 - 避免使用通配符*如果你能...
我知道列明所有列在大表的SELECT語句是一種痛苦所以這裏是一個快速的捷徑您可能不知道:在SQL Server Management Studio中,瀏覽對象資源管理器並找到要從中選擇的表(MailingList)。右鍵單擊它以查看上下文菜單並選擇「Script Table as」,然後選擇「」,然後選擇「新建查詢編輯器窗口」。這將創建一個新的select語句,並列出每個列。將來,使用此方法創建選擇語句,查詢,過程等,而不是*通配符。性能更好,它看起來更好:-)
然後,你可以用替換函數解決你的別名問題。
有沒有理由不能稱之爲「AddressNoCommas」或類似的東西? –
最佳做法是避免選擇*並選擇您需要的列。 SSMS腳本輕鬆爲您提供Sql查詢。用*表示,否則不能有一個地址,但用正確的方式選擇列可以。 – shadow
我經常希望這個,但它可能不是一個好主意......我所做的是使用SSMS,選擇top 1000來生成我的選擇列表並替換相關列。在你的情況下,用你的替換語句替換地址字段。至少可以保存所有的輸入。如果你不喜歡這種格式,你可以創建一個存儲過程來以你選擇的格式返回選擇列表。 –