Заменить одинарные кавычки в SQL Server - PullRequest
42 голосов
/ 17 сентября 2009

У меня есть эта функция в 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

Ответы [ 12 ]

95 голосов
/ 17 сентября 2009

Вам нужно удвоить одинарные кавычки следующим образом:

REPLACE(@strip, '''', '')
23 голосов
/ 17 сентября 2009

Попробуйте REPLACE(@strip,'''','')

SQL использует две кавычки для представления одной в строке.

16 голосов
/ 17 сентября 2009

Если вам действительно нужно полностью удалить одиночные кавычки, вы можете сделать это:

Replace(@strip, '''', '')

Однако обычно вы заменяете «на», и это делает SQL Server счастливым при запросах к базе данных. Уловка с любой из встроенных функций SQL (например, replace) заключается в том, что они также требуют от вас удвоить одинарные кавычки.

Таким образом, чтобы заменить 'с' 'в коде, вы должны сделать это:

Replace(@strip, '''', '''''')

Конечно ... в некоторых ситуациях вы можете избежать необходимости делать это полностью, если вы используете параметры при запросах к базе данных. Допустим, вы запрашиваете базу данных из приложения .NET, а затем вы используете класс SqlParameter для подачи параметров SqlCommand для запроса, и все эти операции с одинарными кавычками будут выполняться автоматически. Обычно это предпочтительный метод, так как параметры SQL также помогут предотвратить атаки SQL инъекция .

4 голосов
/ 17 сентября 2009

Похоже, вы пытаетесь дублировать функциональность QUOTENAME . Эта встроенная функция может использоваться для добавления разделителей и правильного экранирования разделителей внутри строк и распознает как одинарные ' и двойные " кавычки в качестве разделителей, так и скобки [ и ].

3 голосов
/ 13 января 2017

Вы можете использовать char (39)

insert into my_table values('hi, my name'+char(39)+'s tim.')
2 голосов
/ 17 сентября 2009

Попробуйте избежать одиночной кавычки с одной кавычкой:

Replace(@strip, '''', '')
1 голос
/ 04 апреля 2017

Я столкнулся со странной аномалией, которая могла бы быть здесь. Используя Google API и получая ответ в формате XML, он не смог преобразовать в тип данных XML из-за одинарных кавычек.

Заменить (@Strip, '' '', '')

не работал, потому что одиночная кавычка была символом ascii 146 вместо 39. Поэтому я использовал:

Заменить (@Strip, char (146), '')

, который также работает для обычных одинарных кавычек char (39) и любых других специальных символов.

1 голос
/ 17 сентября 2009

Чередование / замена / удаление одиночных кавычек из пользовательского ввода ( очистка ввода ) должно быть выполнено до того, как оператор SQL достигнет базы данных.

0 голосов
/ 14 августа 2018

выберите replace (colname, '' '', '') AS colname FROM. [Dbo]. [Db Name]

0 голосов
/ 06 сентября 2013

Если экранирование вашей одиночной кавычки с помощью другой одиночной кавычки не работает для вас (как это не было для одного из моих недавних запросов REPLACE ()), вы можете использовать SET QUOTED_IDENTIFIER OFF перед вашим запросом, а затем SET QUOTED_IDENTIFIER ON после .

Например

SET QUOTED_IDENTIFIER OFF;

UPDATE TABLE SET NAME = REPLACE(NAME, "'S", "S");

SET QUOTED_IDENTIFIER OFF;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...