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

Как вставить текст с одинарной котировкой sql server 2005

Я хочу вставить текст с одной цитатой Например, john to table в базе данных sql server 2005

4b9b3361

Ответ 1

Побег одиночной кавычки с дополнительным синглом, как заметил Киртан
И если вы пытаетесь выполнить динамический sql (что не является хорошей идеей в первую очередь) через sp_executesql, то ниже приведенный ниже код будет работать для вас

sp_executesql N'INSERT INTO SomeTable (SomeColumn) VALUES (''John''''s'')'

Ответ 2

Ответ действительно зависит от того, как вы делаете INSERT.

Если вы указываете литерал SQL, вам нужно использовать двойной знак:

-- Direct insert
INSERT INTO Table1 (Column1) VALUES ('John''s')

-- Using a parameter, with a direct insert
DECLARE @Value varchar(50)
SET @Value = 'John''s'
INSERT INTO Table1 (Column1) VALUES (@Value)

-- Using a parameter, with dynamic SQL
DECLARE @Value varchar(50)
SET @Value = 'John''s'
EXEC sp_executesql 'INSERT INTO Table1 (Column1) VALUES (@p1)', '@p1 varchar(50)', @Value

Если вы делаете INSERT из кода, используйте параметры:

// Sample ADO.NET
using (SqlConnection conn = new SqlConnection(connectionString)) {
    conn.Open();
    using (SqlCommand command = conn.CreateCommand()) {
        command.CommandText = "INSERT INTO Table1 (Column1) VALUES (@Value)";

        command.Parameters.AddWithValue("@Value", "John's");

        command.ExecuteNonQuery();
    }
}

Если ваши данные содержат пользовательский ввод, прямой или косвенный, USE PARAMETERS. Параметры защищают от атак SQL Injection. Никогда не создавайте динамический SQL с пользовательским вводом.

Ответ 3

Это сработало для меня:

  INSERT INTO [TABLE]
  VALUES ('text','''test.com''', 1)

В принципе, вы берете одну цитату, которую хотите вставить, и замените ее на две. Поэтому, если вы хотите вставить строку текста ( "текст" ) и добавить одинарные кавычки вокруг нее, это будет ('' 'text' ''). Надеюсь, это поможет.

Ответ 4

INSERT INTO Table1 (Column1) VALUES ('John''s')

Или вы можете использовать хранимую процедуру и передать параметр как -

usp_Proc1 @Column1 = 'John''s'

Если вы используете запрос INSERT, а не хранимая процедура, вам придется избегать цитаты с двумя кавычками, иначе ее OK, если вы этого не сделаете.

Ответ 5

Этот ответ работает в SQL Server 2005, 2008, 2012.

Иногда значение имеет МНОГИЕ одинарные кавычки. Вместо добавления отдельной цитаты рядом с каждой отдельной цитатой, как описано выше, с помощью 'John''s'. И есть примеры, использующие функцию REPLACE для обработки многих одинарных кавычек в значении.

Попробуйте следующее. Это инструкция обновления, но вы также можете использовать ее в инструкции INSERT.

SET QUOTED_IDENTIFIER OFF

DECLARE @s VARCHAR(1000)

SET @s = "SiteId:'1'; Rvc:'6'; Chk:'1832'; TrEmp:'150'; WsId:'81'; TtlDue:'-9.40'; TtlDsc:'0'; TtlSvc:'0'; TtlTax:'-0.88'; TtlPay:'0'; TipAmt:'0.00'; SvcSeq:'09'; ReTx:'N'; TraceId:'160110124347N091832';"


UPDATE TransactionPaymentPrompt
set PromptData = @s

from TransactionPaymentPrompt tpp with (nolock)
where tpp.TransactionID = '106627343'

Ответ 6

Вы спросили, как избежать Apostrophe character (') в SQL Server. Все ответы, приведенные выше, отлично справляются с этим.

Однако, в зависимости от ситуации, может оказаться целесообразным Right single quotation mark character (’).

(Нет необходимости в escape-символах)

-- Direct insert
INSERT INTO Table1 (Column1) VALUES ('John’s')

• Апостроф (U + 0027)

Аскейский апостроф в Википедии

• Правая одинарная кавычка (U + 2019)

Юникод Правая одинарная цитата в Википедии