Я хочу вставить текст с одной цитатой Например, john to table в базе данных sql server 2005
Как вставить текст с одинарной котировкой sql server 2005
Ответ 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)