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