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

时间:2016-08-05 15:32:59

标签: sql sql-server

我有一个文件名,需要插入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), '''')
    
  2. 我的最终目标是正确地识别上述文件名,并从插入的存储过程中调用此函数。

    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
    

1 个答案:

答案 0 :(得分:0)

我想你想要这一行:

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

这会将所有单引号更改为加倍引号(转义)。

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