使用单引号转义字符串的单引号

问题描述:

我有一个文件名,需要在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

我想你想这行:

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

这改变了所有单引号一倍引号(转义)。

你也不需要WHILE循环。只有一行应该正确地逃避事情。