Подтвердить что ты не робот

Заменить одиночные кавычки в SQL Server

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

Ответ 1

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

REPLACE(@strip, '''', '')

Ответ 2

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

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

Ответ 3

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

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

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

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

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

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

Ответ 4

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

Ответ 5

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

insert into my_table values('hi, my name'+char(39)+ tim.')

Ответ 6

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

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

Ответ 7

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

Ответ 8

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

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

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

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

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

Ответ 9

Помимо необходимости избегать цитаты (используя двойные кавычки), вы также путаете имена переменных: вы используете @var и @strip вместо @CleanString и @strStrip...

Ответ 10

Я думаю, что это кратчайший оператор SQL для этого:

CREATE FUNCTION [dbo].[fn_stripsingleQuote] (@strStrip varchar(Max))
    RETURNS varchar(Max)
AS
BEGIN    
    RETURN (Replace(@strStrip ,'''',''))
END

Надеюсь, это поможет!

Ответ 11

Если вы избежите одиночной кавычки с другой отдельной цитатой, которая не работает для вас (например, она не для одного из моих последних запросов 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;

Ответ 12

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

Ответ 13

Попробуйте это:

select replace (colname, char(39)+char(39), '') AS colname FROM .[dbo].[Db Name];

Я достиг желаемого результата. Пример: входное значение → Like '% Pat') '' OR

      Want Output -->  *Like '%Pat') OR*

с помощью вышеуказанного запроса достигнут желаемый результат.