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

So aktivieren Sie den Pipe-Verkettungsoperator in MySQL

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 Ihrem sql_mode
  • Legen Sie sql_mode fest zu ANSI .

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.