MySQL admite el uso del operador de concatenación de tuberías (||
) para concatenar sus operandos. Sin embargo, primero debe habilitarlo.
Por defecto, MySQL trata ||
como un OR
lógico operador (aunque este tratamiento está actualmente en desuso). Sin embargo, el estándar ANSI requiere que ||
es un operador de concatenación. Tal vez tenga un código que ya usa el operador de concatenación de tubería, y preferiría no pasar y cambiar el código para usar el CONCAT()
función.
Afortunadamente, MySQL nos brinda la capacidad de especificar si lo tratamos como un OR
lógico operador o un operador de concatenación.
Puede habilitar ||
como operador de concatenación configurando la opción aplicable en su sql_mode
.
Tienes dos opciones:
- Añadir
PIPES_AS_CONCAT
a susql_mode
- Establecer
sql_mode
aANSI
.
Opción 1
Aquí, agrego PIPES_AS_CONCAT
a mi sql_mode
:
SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT'));
Es cierto que podría haber ido 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.
Opción 2
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.
Compruebe su sql_mode
Puede verificar su sql_mode
así:
SELECT @@sql_mode;
Resultado:
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI
Ese es el resultado que obtengo después de cambiar a ANSI
modo. Podemos ver el PIPES_AS_CONCAT
está incluido en la lista de opciones.
Ejemplo de concatenación
Después de configurar el sql_mode
usando una de las técnicas anteriores, ahora podemos usar ||
como operador de concatenación de tuberías:
SELECT 'Homer' || 'Symptom';
Resultado:
HomerSymptom
Si no hubiéramos habilitado el operador de concatenación de tuberías, lo más probable es que hubiéramos obtenido un resultado inesperado, con una advertencia.