替换SQL Server中的单引号

aca*_*dia 45 sql-server error-handling replace

我在SQL Server中使用此函数来替换单引号.

但是,当我插入单引号时,它会抛出一个错误Replace(@strip,''','')):

Create Function [dbo].[fn_stripsingleQuote]
    (@strStrip varchar(Max))
    returns varchar
as
begin
    declare @CleanString varchar(Max)
    SET @var=(Replace(@strip,'',''))

    return @var
end
Run Code Online (Sandbox Code Playgroud)

Dav*_*res 100

您需要将单引号加倍,如下所示:

REPLACE(@strip, '''', '')
Run Code Online (Sandbox Code Playgroud)

  • 替换(@WAREHOUSE,'''','''''') (2认同)

Sco*_*art 25

尝试 REPLACE(@strip,'''','')

SQL 使用两个引号来表示字符串中的一个.


Ste*_*ham 18

如果你真的必须完全删除单引号,你可以这样做:

Replace(@strip, '''', '')
Run Code Online (Sandbox Code Playgroud)

但是,通常你会用'with'替换',这将使SQL Server在查询数据库时感到高兴.任何内置SQL函数(如替换)的技巧是它们也要求你加倍单引号.

因此,要在代码中替换"with",您可以这样做:

Replace(@strip, '''', '''''')
Run Code Online (Sandbox Code Playgroud)

当然......在某些情况下,如果在查询数据库时使用参数,则可以避免完全执行此操作.假设您从.NET应用程序查询数据库,那么您将使用SqlParameter类为查询提供SqlCommand参数,并且所有这些单引号业务将自动处理.这通常是首选方法,因为SQL参数也有助于防止SQL注入攻击.


Nic*_*icy 8

你可以使用 char(39)

insert into my_table values('hi, my name'+char(39)+'s tim.')
Run Code Online (Sandbox Code Playgroud)

或者在这种情况下:

Replace(@strip,char(39),'')
Run Code Online (Sandbox Code Playgroud)