Sql-Server
從 MS SQL 中的內聯 CSV 值中選擇
我偶爾會收到修改某些數據的一次性請求,並且該請求帶有 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 人徹底記錄和測試,所以我只把你指向那裡。請務必通讀評論部分,因為對於不同的數據大小、環境等,存在替代解決方案和測試結果 - 只需選擇最適合您的解決方案即可。