2014-06-05 135 views
0

我傳遞以下字符串我的存儲過程在替換中使用單引號?

'1,2,3,4,5,6' 

我試圖取代,用「」讓我的字符串翻譯成:

'1','2','3','4','5','6' 

這可能嗎?這裏是我的嘗試:

Declare @Var2 varchar(250) 
SET @Var2 = Replace(@Var1, ',', "','") 
+4

如果你想使用在'IN()'條款,然後抽出時間 - 它不會有一個字符串的工作,即使它包含''' –

+0

哦,真的?黨,這就是我要做的。感謝 – shenn

+1

這可能只是你想要什麼:http://ole.michelsen.dk/blog/split-string-to-table-using-transact-sql/ –

回答

0

它應該像下面,你需要逃避額外'

select replace(@Var1,',',''',''') 

但這樣做會導致一些你不能在INLIST使用。因此,嘗試像

select ''''+ replace('1,2,3,4,5,6',',',''',''') + '''' 

這將導致在'1','2','3','4','5','6'

+0

@shenn,你有沒有試過這個建議? – Rahul

1

如果你想傳遞的值的列表作爲參數使用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在幾乎一切。他做了很多測試,以便您可以根據自己的需求選擇最佳方法。