Par défaut, deux caractères pipe (||
) sont traités comme un OR
logique opérateur dans MariaDB. Cependant, vous pouvez modifier ce comportement si vous le souhaitez.
Vous pouvez mettre à jour votre sql_mode
pour inclure le PIPES_AS_CONCAT
option, auquel cas deux canaux seront traités comme un opérateur de concaténation.
Il existe plusieurs façons d'ajouter cette option à votre sql_mode
. Vous pouvez l'ajouter explicitement. Ou vous pouvez définir votre sql_mode
à une option qui la définit implicitement.
Je passe en revue ces options ci-dessous.
Ajouter PIPES_AS_CONCAT
Explicitement
Si vous ne voulez pas gâcher votre sql_mode
existant paramètres, vous pouvez exécuter le code suivant :
SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT'));
Cela ajoute PIPES_AS_CONCAT
sans enlever quoi que ce soit d'autre. J'aurais pu utiliser 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.
Vérifions mon sql_mode
existant paramètres après avoir exécuté ce code :
SELECT @@sql_mode;
Résultat :
PIPES_AS_CONCAT,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Nous pouvons voir que PIPES_AS_CONCAT
est inclus avec d'autres options qui existaient déjà.
ANSI
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.
Notez que cela supprimera tous les paramètres existants et n'utilisera que les paramètres applicables à l'ANSI
option.
Pour le démontrer, regardons à nouveau mon sql_mode
après l'avoir défini sur ANSI
:
SET sql_mode='ANSI';
SELECT @@sql_mode;
Résultat :
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI
Nous pouvons voir que mon sql_mode
a complètement changé.
DB2
Dans le même ordre d'idées, nous pouvons définir notre sql_mode
pour être plus en phase avec les différents SGBD.
Voici comment le configurer pour utiliser les conventions DB2 :
SET sql_mode='DB2';
SELECT @@sql_mode;
Résultat :
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,DB2,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS
Ce sont les options qui s'alignent sur DB2.
MaxDB
SET sql_mode='MAXDB';
SELECT @@sql_mode;
Résultat :
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
SQL Server
Utiliser MSSQL
pour le configurer afin qu'il utilise les conventions SQL Server :
SET sql_mode='MSSQL';
SELECT @@sql_mode;
Résultat :
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MSSQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS
Oracle
SET sql_mode='ORACLE';
SELECT @@sql_mode;
Résultat :
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT
Le SIMULTANEOUS_ASSIGNMENT
l'option n'est ajoutée que lors de l'utilisation de MariaDB 10.3 et supérieur.
PostgreSQL
SET sql_mode='POSTGRESQL';
SELECT @@sql_mode;
Résultat :
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS