MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

7 opções para habilitar pipes (||) como operador de concatenação no MariaDB


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