sql >> Databáze >  >> RDS >> MariaDB

7 Možnosti pro povolení Pipes (||) jako operátora zřetězení v MariaDB

Ve výchozím nastavení jsou dva svislé znaky (|| ) jsou považovány za logické OR operátor v MariaDB. Toto chování však můžete změnit, pokud chcete.

Svůj sql_mode můžete aktualizovat zahrnout PIPES_AS_CONCAT možnost, v takovém případě budou dvě roury považovány za operátor zřetězení.

Existuje několik způsobů, jak přidat tuto možnost do vašeho sql_mode . Můžete to přidat explicitně. Nebo můžete nastavit svůj sql_mode na možnost, která jej nastavuje implicitně.

Níže si projdu tyto možnosti.

Přidat PIPES_AS_CONCAT Explicitně

Pokud si nechcete pokazit svůj stávající sql_mode nastavení, můžete spustit následující kód:

SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT')); 

Tím se přidá PIPES_AS_CONCAT aniž byste odstranili něco jiného. Mohl jsem použít sql_mode = 'PIPES_AS_CONCAT' , ale ztratil bych všechny stávající možnosti. Použití výše uvedené techniky zajistí, že neztratím žádné existující možnosti.

Pojďme zkontrolovat můj stávající sql_mode nastavení po spuštění tohoto kódu:

SELECT @@sql_mode;

Výsledek:

PIPES_AS_CONCAT,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Vidíme, že PIPES_AS_CONCAT je zahrnuta spolu s dalšími možnostmi, které již existovaly.

ANSI

Dalším způsobem, jak to udělat, je nastavit sql_mode na ANSI :

SET sql_mode='ANSI';

ANSI režim mění syntaxi a chování tak, aby více odpovídaly standardnímu SQL.

Upozorňujeme, že tímto odstraníte všechna stávající nastavení a použijete pouze nastavení platná pro ANSI možnost.

Abychom to demonstrovali, podívejme se znovu na můj sql_mode po nastavení na ANSI :

SET sql_mode='ANSI';
SELECT @@sql_mode;

Výsledek:

REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI

Vidíme, že můj sql_mode se úplně změnil.

DB2

Ve stejném duchu můžeme nastavit náš sql_mode být více v souladu s různými DBMS.

Zde je návod, jak jej nastavit, aby používal konvence DB2:

SET sql_mode='DB2';
SELECT @@sql_mode;

Výsledek:

PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,DB2,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS

Toto jsou volby, které jsou v souladu s DB2.

MaxDB

SET sql_mode='MAXDB';
SELECT @@sql_mode;

Výsledek:

PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER

SQL Server

Použijte MSSQL nastavte jej tak, aby používal konvence SQL Server:

SET sql_mode='MSSQL';
SELECT @@sql_mode;

Výsledek:

PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MSSQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS

Oracle

SET sql_mode='ORACLE';
SELECT @@sql_mode;

Výsledek:

PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT

SIMULTANEOUS_ASSIGNMENT možnost je přidána pouze při použití MariaDB 10.3 a vyšší.

PostgreSQL

SET sql_mode='POSTGRESQL';
SELECT @@sql_mode;

Výsledek:

PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS

  1. Funkce pro odstranění akcentů v postgreSQL

  2. Funkce ABS() v Oracle

  3. Sběr dat data a času

  4. Proč byste se měli učit PostgreSQL?