Sql-Server

從 MS SQL 中的內聯 CSV 值中選擇

  • November 25, 2009

我偶爾會收到修改某些數據的一次性請求,並且該請求帶有 CSV 中的一些值。有沒有一種方法可以快速輕鬆地將任意 CSV 視為表或行源,即使是內聯數據?

EG,我可以這樣做:

SELECT * FROM SomeSpecialCommand('
147074,13
153987,16
147075,3
176405,16
176437,25
176436,14
176406,14
176439,13
176407,13
') as MyInlineCSV

促使這是一個修改約 100 件商品庫存水平的請求,我收到了一個帶有 SKU 編號和數量的 CSV(如上)。

您可能想要使用一種稱為使用者定義的表值函式的東西。基本上,您將創建一個函式,該函式採用單個 nvarchar(max) 參數並創建一個從 CSV 輸入返回的表。您可以在這裡採用數十種方法(使用數字表、使用 XML 類型、使用循環等),但這已經被一些聰明的 Sql 人徹底記錄和測試,所以我只把你指向那裡。請務必通讀評論部分,因為對於不同的數據大小、環境等,存在替代解決方案和測試結果 - 只需選擇最適合您的解決方案即可。

引用自:https://serverfault.com/questions/87947