MySQL unterstützt die Verwendung des Pipe-Verkettungsoperators (||
) zum Verketten seiner Operanden. Allerdings müssen Sie es zuerst aktivieren.
Standardmäßig behandelt MySQL ||
als logisches OR
Operator (obwohl diese Behandlung derzeit veraltet ist). Der ANSI-Standard erfordert jedoch, dass ||
ist ein Verkettungsoperator. Vielleicht haben Sie Code, der bereits den Pipe-Verkettungsoperator verwendet, und Sie möchten den Code lieber nicht durchgehen und ändern, um CONCAT()
zu verwenden Funktion.
Glücklicherweise gibt uns MySQL die Möglichkeit anzugeben, ob es als logisches OR
behandelt werden soll Operator oder ein Verkettungsoperator.
Sie können ||
aktivieren als Verkettungsoperator, indem Sie die entsprechende Option in Ihrem sql_mode
setzen .
Sie haben zwei Möglichkeiten:
- Fügen Sie
PIPES_AS_CONCAT
hinzu zu Ihremsql_mode
- Legen Sie
sql_mode
fest zuANSI
.
Möglichkeit 1
Hier füge ich PIPES_AS_CONCAT
hinzu zu meinem sql_mode
:
SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT'));
Es ist wahr, dass ich einfach sql_mode = 'PIPES_AS_CONCAT'
hätte gehen können , aber ich hätte alle bestehenden Optionen verloren. Die Verwendung der obigen Technik stellt sicher, dass ich keine vorhandenen Optionen verliere.
Option 2
Eine andere Möglichkeit besteht darin, den sql_mode
festzulegen zu ANSI
:
SET sql_mode='ANSI';
ANSI
mode ändert die Syntax und das Verhalten, um mehr mit Standard-SQL übereinzustimmen.
Überprüfen Sie Ihren sql_mode
Sie können Ihren sql_mode
überprüfen so:
SELECT @@sql_mode;
Ergebnis:
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI
Das ist das Ergebnis, das ich nach dem Wechsel zu ANSI
erhalte Modus. Wir können den PIPES_AS_CONCAT
sehen ist in der Liste der Optionen enthalten.
Verkettungsbeispiel
Nach dem Setzen des sql_mode
Mit einer der oben genannten Techniken können wir jetzt ||
verwenden als Pipe-Verkettungsoperator:
SELECT 'Homer' || 'Symptom';
Ergebnis:
HomerSymptom
Wenn wir den Pipe-Verkettungsoperator nicht aktiviert hätten, hätten wir höchstwahrscheinlich ein unerwartetes Ergebnis mit einer Warnung erhalten.