Por padrão, dois caracteres de barra vertical (
||
) são tratados como um OR
lógico operador no MariaDB. No entanto, você pode alterar esse comportamento se desejar. Você pode atualizar seu
sql_mode
para incluir o PIPES_AS_CONCAT
opção, neste caso dois tubos serão tratados como um operador de concatenação. Existem algumas maneiras de adicionar esta opção ao seu
sql_mode
. Você pode adicioná-lo explicitamente. Ou você pode definir seu sql_mode
para uma opção que a define implicitamente. Eu percorro essas opções abaixo.
Adicionar PIPES_AS_CONCAT
Explicitamente
Se você não quiser estragar seu
sql_mode
existente configurações, você pode executar o seguinte código:SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT'));
Isso adiciona
PIPES_AS_CONCAT
sem remover mais nada. Eu poderia ter usado 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. Vamos verificar meu
sql_mode
existente configurações depois de executar esse 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
está incluído junto com outras opções que já existiam. ANSI
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. Observe que isso removerá todas as configurações existentes e usará apenas as configurações aplicáveis ao
ANSI
opção. Para demonstrar isso, vamos dar outra olhada no meu
sql_mode
depois de configurá-lo para ANSI
:SET sql_mode='ANSI';
SELECT @@sql_mode;
Resultado:
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI
Podemos ver que meu
sql_mode
mudou completamente. DB2
Na mesma linha, podemos definir nosso
sql_mode
para estar mais em sintonia com vários SGBDs. Veja como configurá-lo para usar as convenções do 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
Essas são as opções que se alinham com o DB2.
MaxDB
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
SQL Server
Usar
MSSQL
para configurá-lo para usar as convenções do 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
O
SIMULTANEOUS_ASSIGNMENT
A opção só é adicionada ao usar o MariaDB 10.3 e 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