在 MariaDB 中启用管道 (||) 作为级联运算符的 7 个选项

发布于

默认情况下,两个管道字符 () 在 MariaDB 中被视为逻辑运算符。但是,如果您愿意,可以更改此行为。||``OR

您可以更新包含选项,在这种情况下,两个管道将被视为串联运算符。sql_mode``PIPES_AS_CONCAT

有很多方法可以将此选项添加到您的选项中。您可以显式添加它。或者,您可以设置一个隐式设置的选项。sql_mode``sql_mode

我在下面运行这些选项。

显式添加PIPES_AS_CONCAT

如果你不想弄乱你现有的设置,你可以运行以下代码:sql_mode

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

这增加了没有删除任何其他内容。我本可以使用,但我会失去所有现有的选项。使用上述技术可确保我不会丢失任何现有选项。PIPES_AS_CONCAT``sql_mode = 'PIPES_AS_CONCAT'

让我们在运行该代码后检查我的现有设置:sql_mode

SELECT @@sql_mode;

结果:

PIPES_AS_CONCAT,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

我们可以看到它与已经存在的其他选项一起包含在内。PIPES_AS_CONCAT

安西

另一种方法是将 theto 设置为:sql_mode``ANSI

SET sql_mode='ANSI';

ANSImode 会更改语法和行为,以更接近标准 SQL。

请注意,这将删除任何现有设置,并仅使用适用于该选项的设置。ANSI

为了演示这一点,让我们再看一下myafter将其设置为:sql_mode``ANSI

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

结果:

REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI

我们可以看到myhas完全改变了。sql_mode

DB2

同样,我们可以设置与各种DBMS更加协调。sql_mode

下面介绍如何将其设置为使用 DB2 约定:

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

结果:

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

这些是与 DB2 一致的选项。

最大数据库

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

结果:

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

SQL Server

用于将其设置为使用 SQL Server 约定:MSSQL

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

结果:

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

神谕

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

结果:

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

该选项仅在使用 MariaDB 10.3 及更高版本时添加。SIMULTANEOUS_ASSIGNMENT

PostgreSQL

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

结果:

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