sql >> Base de Datos >  >> RDS >> MariaDB

7 opciones para habilitar tuberías (||) como operador de concatenación en MariaDB

Por defecto, dos caracteres verticales (|| ) se tratan como un OR lógico operador en MariaDB. Sin embargo, puede cambiar este comportamiento si lo desea.

Puede actualizar su sql_mode para incluir el PIPES_AS_CONCAT opción, en cuyo caso dos conductos se tratarán como un operador de concatenación.

Hay bastantes formas de agregar esta opción a su sql_mode . Puedes agregarlo explícitamente. O puede configurar su sql_mode a una opción que lo establece implícitamente.

Analizo estas opciones a continuación.

Añadir PIPES_AS_CONCAT Explícitamente

Si no quiere estropear su sql_mode existente configuración, puede ejecutar el siguiente código:

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

Eso agrega PIPES_AS_CONCAT sin quitar nada más. Podría haber usado sql_mode = 'PIPES_AS_CONCAT' , pero habría perdido todas las opciones existentes. El uso de la técnica anterior asegura que no pierdo ninguna opción existente.

Revisemos mi sql_mode existente configuración después de ejecutar ese código:

SELECT @@sql_mode;

Resultado:

PIPES_AS_CONCAT,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Podemos ver que PIPES_AS_CONCAT se incluye junto con otras opciones que ya existían.

ANSI

Otra forma de hacerlo es establecer el sql_mode a ANSI :

SET sql_mode='ANSI';

ANSI el modo cambia la sintaxis y el comportamiento para ajustarse más al SQL estándar.

Tenga en cuenta que esto eliminará cualquier configuración existente y usará solo la configuración aplicable al ANSI opción.

Para demostrar esto, echemos otro vistazo a mi sql_mode después de configurarlo en ANSI :

SET sql_mode='ANSI';
SELECT @@sql_mode;

Resultado:

REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI

Podemos ver que mi sql_mode ha cambiado por completo.

DB2

Del mismo modo, podemos configurar nuestro sql_mode para estar más en sintonía con varios DBMS.

Aquí se explica cómo configurarlo para usar las convenciones de DB2:

SET sql_mode='DB2';
SELECT @@sql_mode;

Resultado:

PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,DB2,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS

Esas son las opciones que se alinean con DB2.

Base de datos máxima

SET sql_mode='MAXDB';
SELECT @@sql_mode;

Resultado:

PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER

Servidor SQL

Usar MSSQL para configurarlo para usar las convenciones de SQL Server:

SET sql_mode='MSSQL';
SELECT @@sql_mode;

Resultado:

PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MSSQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS

Oráculo

SET sql_mode='ORACLE';
SELECT @@sql_mode;

Resultado:

PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT

La SIMULTANEOUS_ASSIGNMENT la opción solo se agrega cuando se usa MariaDB 10.3 y superior.

PostgreSQL

SET sql_mode='POSTGRESQL';
SELECT @@sql_mode;

Resultado:

PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS