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_CONCATa susql_mode - Establecer
sql_modeaANSI.
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.