Wenn Sie in MySQL ein SQL-UPDATE für mehrere Zeilen durchführen, können Sie anscheinend jeden Wert in einfache Anführungszeichen setzen oder nicht und es werden dieselben Ergebnisse erzielt.
Gibt es einen Grund für die Verwendung von einfachen Anführungszeichen in einer UPDATE-Abfrage, wenn die Verwendung von einfachen Anführungszeichen dieselben Ergebnisse liefert? Gibt es überhaupt einen Unterschied?
Beispiel ohne Anführungszeichen:
UPDATE superuser
SET poop = rainbows
WHERE id IN (1, 2, 3);
Beispiel mit Anführungszeichen:
UPDATE superuser
SET poop = rainbows
WHERE id IN ('1', '2', '3');
Antwort1
Setzen Sie grundsätzlich alle Zeichenfolgen in Anführungszeichen und entfernen Sie die Anführungszeichen bei Zahlen. Ihr SQL wird jedoch unterbrochen, wenn die Zeichenfolge einfache Anführungszeichen enthält. Entkommen Sie daher den einfachen Anführungszeichen, indem Sie sie verdoppeln.
SELECT * FROM superuser WHERE poop = 'johnny''s'
-- note how the string [johnny's] have double quotes
Andererseits ist das Anführen von Zahlen in SQL schlecht. Obwohl SQL implizit versucht, diese Werte zu konvertieren, kann dies zu unerwünschten Ergebnissen führen. Angenommen, Sie haben einen CHAR-Typ und geben ihm ein nicht in Anführungszeichen gesetztes , 1
statt eines in Anführungszeichen gesetzten '1'
, dann erhalten Sie das Zeichen an der ersten Position des Zeichensatzes statt eines tatsächlichen Zeichens „1“.