Je veux insérer du texte avec guillemets simples .__
Escape single quote avec un single supplémentaire comme l'a souligné Kirtan
Et si vous essayez d’exécuter un SQL dynamique (ce qui n’est pas une bonne idée en premier lieu) via sp_executesql, le code ci-dessous vous conviendra.
sp_executesql N'INSERT INTO SomeTable (SomeColumn) VALUES (''John''''s'')'
La réponse dépend vraiment de la façon dont vous faites la INSERT
.
Si vous spécifiez un littéral SQL, vous devez utiliser la méthode du double tick:
-- 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
Si vous effectuez l'insertion à partir de code, utilisez les paramètres suivants:
// 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();
}
}
Si vos données contiennent des entrées utilisateur, directes ou indirectes, USE PARAMETERS . Les paramètres protègent contre les attaques par injection SQL. Ne jamais créer de SQL dynamique avec une entrée utilisateur.
Cela a fonctionné pour moi:
INSERT INTO [TABLE]
VALUES ('text','''test.com''', 1)
Fondamentalement, vous prenez la citation unique que vous souhaitez insérer et vous la remplacez par deux. Donc, si vous voulez insérer une chaîne de texte ('text') et ajouter des guillemets simples autour de celle-ci, ce sera ('' 'text' ''). J'espère que cela t'aides.
INSERT INTO Table1 (Column1) VALUES ('John''s')
Ou vous pouvez utiliser une procédure stockée et transmettre le paramètre sous la forme -
usp_Proc1 @Column1 = 'John''s'
Si vous utilisez une requête INSERT et non une procédure stockée, vous devrez échapper la citation avec deux guillemets, sinon c'est OK si vous ne le faites pas.
Cette réponse fonctionne dans SQL Server 2005, 2008 et 2012.
Parfois, la valeur a BEAUCOUP de guillemets simples. Plutôt que d'ajouter un seul devis à côté de chaque devis, comme décrit ci-dessus avec 'John''s'
. Et il existe des exemples utilisant la fonction REPLACE
pour gérer plusieurs guillemets simples dans une valeur.
Essayez ce qui suit. Il s'agit d'une instruction de mise à jour, mais vous pouvez également l'utiliser dans une instruction 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'
Vous avez demandé comment échapper à Apostrophe character (')
dans SQL Server. Toutes les réponses ci-dessus font un excellent travail pour expliquer cela.
Toutefois, selon la situation, la Right single quotation mark character (’)
peut être appropriée.
_ {(Aucun caractère d'échappement requis)} _
-- Direct insert
INSERT INTO Table1 (Column1) VALUES ('John’s')
• Apostrophe (U + 0027)
Ascii Apostrophe sur Wikipedia
• guillemet simple à droite (U + 2019)