MySQL suporta o uso do operador de concatenação de pipe (
|| ) para concatenar seus operandos. No entanto, você precisa habilitá-lo primeiro. Por padrão, o MySQL trata
|| como um OR lógico operador (embora este tratamento esteja atualmente obsoleto). No entanto, o padrão ANSI exige que || é um operador de concatenação. Talvez você tenha um código que já use o operador de concatenação de pipe e prefira não alterar o código para usar o CONCAT() função. Felizmente, o MySQL nos fornece a capacidade de especificar se devemos tratá-lo como um
OR lógico operador ou um operador de concatenação. Você pode ativar
|| como um operador de concatenação definindo a opção aplicável em seu sql_mode . Você tem duas opções:
- Adicionar
PIPES_AS_CONCATpara o seusql_mode - Definir
sql_modeparaANSI.
Opção 1
Aqui, adiciono
PIPES_AS_CONCAT para meu sql_mode :SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT')); É verdade que eu poderia simplesmente ter ido
sql_mode = 'PIPES_AS_CONCAT' , mas eu teria perdido todas as opções existentes. Usar a técnica acima garante que eu não perca nenhuma das opções existentes. Opção 2
Outra maneira de fazer isso é definir o
sql_mode para ANSI :SET sql_mode='ANSI'; ANSI O modo altera a sintaxe e o comportamento para se adequar mais ao SQL padrão. Verifique seu sql_mode
Você pode verificar seu
sql_mode assim:SELECT @@sql_mode; Resultado:
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI
Esse é o resultado que recebo depois de mudar para
ANSI modo. Podemos ver o PIPES_AS_CONCAT está incluído na lista de opções. Exemplo de concatenação
Depois de definir o
sql_mode usando uma das técnicas acima, agora podemos usar || como um operador de concatenação de tubos:SELECT 'Homer' || 'Symptom'; Resultado:
HomerSymptom
Se não tivéssemos habilitado o operador de concatenação de pipe, provavelmente teríamos obtido um resultado inesperado, com um aviso.