J'ai cet exemple de requête T-SQL et l'essayer sur SQL-Server-2008.
DECLARE nvarchar(1000) @wstring = "I asked my son's teacher, "How is my son doing now?""
UPDATE tablename SET columnname = ' " & @wstring & " ' where ... blah ... blah
Je sais que la requête ci-dessus va jeter une erreur.
Alors, comment puis-je gérer-échapper les guillemets simples et doubles dans une instruction SQL-Update.
Ne suggérez pas d’ajouter manuellement une "barre oblique" ou une citation unique avant chaque citation et de manière similaire pour "bouble-quote".
Cela serait peu pratique, car l'exemple ci-dessus n'est qu'un exemple et que la valeur réelle de l'application est supérieure à 1 000 caractères, qui seraient reçus d'une autre source système.
Vous pouvez échapper aux citations avec une barre oblique inverse:
"I asked my son's teacher, \"How is my son doing now?\""
Utilisez deux guillemets simples pour les échapper dans l'instruction SQL. Les guillemets doubles ne devraient pas être un problème:
SELECT 'How is my son''s school helping him learn? "Not as good as Stack Overflow would!"'
Impression:
How is my son's school helping him learn? "Not as good as Stack Overflow would!"
Selon la langue dans laquelle vous programmez, vous pouvez utiliser une fonction pour remplacer les guillemets doubles par deux guillemets.
Par exemple, dans PHP, cela serait:
str_replace('"', '""', $string);
Si vous essayez de faire cela en utilisant uniquement SQL, peut-être que REPLACE () est ce que vous recherchez.
Donc, votre requête ressemblerait à quelque chose comme ça:
"UPDATE Table SET columnname = '" & REPLACE(@wstring, '"', '""') & "' where ... blah ... blah "
Lorsque SET QUOTED_IDENTIFIER est désactivé, les chaînes littérales d'expressions peuvent être délimitées par des guillemets simples ou doubles.
Si une chaîne littérale est délimitée par des guillemets doubles, elle peut contenir des guillemets simples incorporés, tels que des apostrophes.
Utilisez "REPLACE" pour supprimer les caractères spéciaux.
REPLACE(ColumnName ,' " ','')
Ex: -
- Query ---
DECLARE @STRING AS VARCHAR(100)
SET @STRING ='VI''RA""NJA "'
SELECT @STRING
SELECT REPLACE(REPLACE(@STRING,'''',''),'"','') AS MY_NAME
--Résultat---
VI'RA "" NJA "
En C # et VB, l’objet SqlCommand implémente la méthode Parameter.AddWithValue, qui gère.