Secara default, dua karakter pipa (||
) diperlakukan sebagai logika OR
operator di MariaDB. Namun, Anda dapat mengubah perilaku ini jika mau.
Anda dapat memperbarui sql_mode
untuk menyertakan PIPES_AS_CONCAT
opsi, dalam hal ini dua pipa akan diperlakukan sebagai operator rangkaian.
Ada beberapa cara untuk menambahkan opsi ini ke sql_mode
Anda . Anda dapat menambahkannya secara eksplisit. Atau Anda dapat mengatur sql_mode
ke opsi yang menetapkannya secara implisit.
Saya menjalankan opsi di bawah ini.
Tambahkan PIPES_AS_CONCAT
Secara eksplisit
Jika Anda tidak ingin mengacaukan sql_mode
Anda yang sudah ada pengaturan, Anda dapat menjalankan kode berikut:
SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT'));
Itu menambahkan PIPES_AS_CONCAT
tanpa menghapus apa pun. Saya bisa menggunakan sql_mode = 'PIPES_AS_CONCAT'
, tapi saya akan kehilangan semua opsi yang ada. Menggunakan teknik di atas memastikan bahwa saya tidak kehilangan opsi yang ada.
Mari kita periksa sql_mode
saya yang ada pengaturan setelah menjalankan kode itu:
SELECT @@sql_mode;
Hasil:
PIPES_AS_CONCAT,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Kita dapat melihat bahwa PIPES_AS_CONCAT
disertakan bersama dengan opsi lain yang sudah ada.
ANSI
Cara lain untuk melakukannya adalah dengan mengatur sql_mode
ke ANSI
:
SET sql_mode='ANSI';
ANSI
mode mengubah sintaks dan perilaku agar lebih sesuai dengan SQL standar.
Perhatikan bahwa ini akan menghapus semua pengaturan yang ada dan hanya menggunakan pengaturan yang berlaku untuk ANSI
pilihan.
Untuk mendemonstrasikan ini, mari kita lihat lagi sql_mode
saya setelah menyetelnya ke ANSI
:
SET sql_mode='ANSI';
SELECT @@sql_mode;
Hasil:
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI
Kita dapat melihat bahwa sql_mode
saya telah benar-benar berubah.
DB2
Dengan cara yang sama, kita dapat mengatur sql_mode
agar lebih selaras dengan berbagai DBMS.
Berikut cara mengaturnya untuk menggunakan konvensi DB2:
SET sql_mode='DB2';
SELECT @@sql_mode;
Hasil:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,DB2,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS
Itu adalah opsi yang sesuai dengan DB2.
MaxDB
SET sql_mode='MAXDB';
SELECT @@sql_mode;
Hasil:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
SQL Server
Gunakan MSSQL
untuk mengaturnya agar menggunakan konvensi SQL Server:
SET sql_mode='MSSQL';
SELECT @@sql_mode;
Hasil:
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;
Hasil:
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
opsi hanya ditambahkan saat menggunakan MariaDB 10.3 dan lebih tinggi.
PostgreSQL
SET sql_mode='POSTGRESQL';
SELECT @@sql_mode;
Hasil:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS