Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So behalten Sie den Backslash bei, wenn Sie Anführungszeichen in MySQL maskieren – QUOTE()

Die Verwendung eines umgekehrten Schrägstrichs als Escapezeichen für einfache Anführungszeichen ist eine häufig verwendete Technik, um sicherzustellen, dass die einfachen Anführungszeichen die Verarbeitung der vollständigen Zeichenfolge durch MySQL nicht beeinträchtigen.

Einfache Anführungszeichen werden verwendet, um eine Zeichenfolge zu umgeben, sodass ein einfaches Anführungszeichen innerhalb der Zeichenfolge selbst Chaos verursachen kann, wenn es nicht ordnungsgemäß maskiert wird. Durch einfaches Einfügen eines umgekehrten Schrägstrichs unmittelbar vor dem Anführungszeichen wird sichergestellt, dass MySQL den String nicht vorzeitig beendet.

Es kann jedoch Situationen geben, in denen Sie möchten, dass der umgekehrte Schrägstrich erhalten bleibt. Beispielsweise könnten Sie beabsichtigen, die Zeichenfolge in einer SQL-Anweisung zu verwenden, und möchten daher, dass sie zuerst ordnungsgemäß maskiert wird.

Hier ist das QUOTE() Funktion kommt.

Das MySQL QUOTE() Die Funktion setzt eine Zeichenfolge in Anführungszeichen, um ein Ergebnis zu erzeugen, das als ordnungsgemäß mit Escapezeichen versehener Datenwert in einer SQL-Anweisung verwendet werden kann. Die Zeichenfolge wird in einfachen Anführungszeichen eingeschlossen und mit jedem Vorkommen von Backslash (\ ), einfaches Anführungszeichen (' ), ASCII NUL , und Strg+Z mit vorangestelltem Backslash.

Syntax der QUOTE()-Funktion

So sieht die Syntax aus:

QUOTE(str)

Wobei str ist der (bereits) maskierte String.

Beispiel

Ein Beispiel erklärt dies wahrscheinlich besser als meine Erklärung:

SELECT QUOTE('Don\'t!') AS Result;

Ergebnis:

+-----------+
| Result    |
+-----------+
| 'Don\'t!' |
+-----------+

Auf den ersten Blick könnte man denken „aber es ist nichts passiert – das Ergebnis ist genau das gleiche wie die Argumentation“. Aber gerade deshalb ist diese Funktion sinnvoll. Wenn wir nicht QUOTE() verwendet hätten Folgendes wäre passiert:

SELECT 'Don\'t!' AS Result;

Ergebnis:

+--------+
| Result |
+--------+
| Don't! |
+--------+

Also mit QUOTE() Funktion behalten wir die einfachen Anführungszeichen und den umgekehrten Schrägstrich bei.

Natürlich ist dies in vielen Fällen genau das, was Sie wollen. In vielen Fällen sollten der Backslash und die umgebenden Anführungszeichen sollten entfernt werden. Aber es kann Fälle geben, in denen Sie genau das wollen, was QUOTE() ist Funktion erledigt das für Sie.

Die Alternative

Das QUOTE() Funktion erspart Ihnen folgendes:

SELECT '''Don\\\'t!''' AS Result;

Ergebnis:

+-----------+
| Result    |
+-----------+
| 'Don\'t!' |
+-----------+

Es erspart uns also, drei einfache Anführungszeichen für jedes einzelne Anführungszeichen und drei Backslashes für jeden einzelnen Backslash zu verwenden.