Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment activer l'opérateur de concaténation de canal dans MySQL

MySQL prend en charge l'utilisation de l'opérateur de concaténation de canal (|| ) pour concaténer ses opérandes. Cependant, vous devez d'abord l'activer.

Par défaut, MySQL traite || sous la forme d'un OR logique opérateur (bien que ce traitement soit actuellement obsolète). Cependant, la norme ANSI exige que || est un opérateur de concaténation. Peut-être avez-vous du code qui utilise déjà l'opérateur de concaténation de canal, et vous préférez ne pas passer par et modifier le code pour utiliser le CONCAT() fonction.

Heureusement, MySQL nous offre la possibilité de spécifier s'il faut le traiter comme un OR logique opérateur ou un opérateur de concaténation.

Vous pouvez activer || en tant qu'opérateur de concaténation en définissant l'option applicable dans votre sql_mode .

Vous avez deux options :

  • Ajouter PIPES_AS_CONCAT à votre sql_mode
  • Définir sql_mode à ANSI .

Option 1

Ici, j'ajoute PIPES_AS_CONCAT à mon sql_mode :

SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT')); 

C'est vrai que j'aurais pu juste aller sql_mode = 'PIPES_AS_CONCAT' , mais j'aurais perdu toutes les options existantes. L'utilisation de la technique ci-dessus garantit que je ne perds aucune option existante.

Option 2

Une autre façon de le faire est de définir le sql_mode à ANSI :

SET sql_mode='ANSI';

ANSI le mode modifie la syntaxe et le comportement pour se conformer plus étroitement au SQL standard.

Vérifiez votre sql_mode

Vous pouvez vérifier votre sql_mode comme ceci :

SELECT @@sql_mode;

Résultat :

REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI

C'est le résultat que j'obtiens après avoir changé en ANSI mode. Nous pouvons voir le PIPES_AS_CONCAT est inclus dans la liste des options.

Exemple de concaténation

Après avoir défini le sql_mode en utilisant l'une des techniques ci-dessus, nous pouvons maintenant utiliser || en tant qu'opérateur de concaténation de tube :

SELECT 'Homer' || 'Symptom';

Résultat :

HomerSymptom

Si nous n'avions pas activé l'opérateur de concaténation de canal, nous aurions très probablement obtenu un résultat inattendu, avec un avertissement.