2016-08-05 101 views
0

我有一個文件名,需要在SQL Server中插入到表中。我知道,我可以加倍單引號和插入,但這個文件名有點棘手。 任何幫助將不勝感激。使用單引號轉義字符串的單引號

@FileName:

'013095','013096','013213','013214','013815','013871','013872','13873','013874','013875','013876','013879','13877','13878' 2015-01-24.xls' 

我知道這是客戶提供的一個非常糟糕的文件名,但我想給它一個嘗試之前,我可以將其恢復。

我已經嘗試了以下兩件事情來實現這一目標:

  1. 使用替換功能通過轉義來代替單引號或雙補。

    set @FilenameFinal = Replace(@FileName,char(39), '''') 
    

我的最終目標是要正確得到這個函數從一個存儲過程,而不會插入識別上面的文件名,並調用這個函數。

Set @index = 1 
Set @FilenameFinal = '' 
set @len = LEN(@FileName) 

while @index <= @len 
begin 
    set @char = Substring(@FileName,@index,1) 

    If (@char = char(39)) 
    begin 
     set @char = Replace(@char, char(39),'''') 
     --set @filename = Replace(@filename,Char(39),'''') 
    end 

    --set @FileName = @char + Substring(`enter code here, @index,1) 
    set @FilenameFinal = @FileNameFinal + @char 

    set @index = @index + 1 
end 

return @FilenameFinal 
+0

請標記您正在使用的RDBMS – TheGameiswar

回答

0

我想你想這行:

set @char = Replace(@char, '''', '''''') 

這改變了所有單引號一倍引號(轉義)。

你也不需要WHILE循環。只有一行應該正確地逃避事情。