我傳遞以下字符串我的存儲過程在替換中使用單引號?
'1,2,3,4,5,6'
我試圖取代,用「」讓我的字符串翻譯成:
'1','2','3','4','5','6'
這可能嗎?這裏是我的嘗試:
Declare @Var2 varchar(250)
SET @Var2 = Replace(@Var1, ',', "','")
我傳遞以下字符串我的存儲過程在替換中使用單引號?
'1,2,3,4,5,6'
我試圖取代,用「」讓我的字符串翻譯成:
'1','2','3','4','5','6'
這可能嗎?這裏是我的嘗試:
Declare @Var2 varchar(250)
SET @Var2 = Replace(@Var1, ',', "','")
它應該像下面,你需要逃避額外'
select replace(@Var1,',',''',''')
但這樣做會導致一些你不能在INLIST使用。因此,嘗試像
select ''''+ replace('1,2,3,4,5,6',',',''',''') + ''''
這將導致在'1','2','3','4','5','6'
@shenn,你有沒有試過這個建議? – Rahul
如果你想傳遞的值的列表作爲參數使用table valued parameter。
的第一步是創建你的類型(我傾向於去的通用名稱,以便它們可以被重複使用):
CREATE TYPE dbo.ListOfInt AS TABLE (Value INT);
然後你就可以作爲參數傳遞相當容易:
DECLARE @T dbo.ListOfInt;
INSERT @T (Value) VALUES (1), (2), (3);
DECLARE @SQL NVARCHAR(MAX) = 'SELECT * FROM dbo.T WHERE ID IN (SELECT Value FROM @T)';
EXECUTE sp_executesql @sql, N'@T dbo.ListOfInt READONLY', @T;
或創建帶有參數的過程:
如果這是不是一種選擇,那麼你需要知道有關SQL Server分割字符串覆蓋由阿龍貝特朗文章Split strings the right way – or the next best way在幾乎一切。他做了很多測試,以便您可以根據自己的需求選擇最佳方法。
如果你想使用在'IN()'條款,然後抽出時間 - 它不會有一個字符串的工作,即使它包含''' –
哦,真的?黨,這就是我要做的。感謝 – shenn
這可能只是你想要什麼:http://ole.michelsen.dk/blog/split-string-to-table-using-transact-sql/ –