使用单引号转义字符串的单引号
问题描述:
我有一个文件名,需要在SQL Server中插入到表中。我知道,我可以加倍单引号和插入,但这个文件名有点棘手。 任何帮助将不胜感激。使用单引号转义字符串的单引号
@FileName:
'013095','013096','013213','013214','013815','013871','013872','13873','013874','013875','013876','013879','13877','13878' 2015-01-24.xls'
我知道这是客户提供的一个非常糟糕的文件名,但我想给它一个尝试之前,我可以将其恢复。
我已经尝试了以下两件事情来实现这一目标:
-
使用替换功能通过转义来代替单引号或双补。
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
答
我想你想这行:
set @char = Replace(@char, '''', '''''')
这改变了所有单引号一倍引号(转义)。
你也不需要WHILE循环。只有一行应该正确地逃避事情。
请标记您正在使用的RDBMS – TheGameiswar