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_CONCAThinzu zu Ihremsql_mode - Legen Sie
sql_modefest 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.