Di MariaDB, MID()
adalah sinonim untuk SUBSTRING()
. Ini mengembalikan substring dari string yang diberikan.
Menurut dokumentasi MariaDB itu adalah sinonim untuk SUBSTRING(str,pos,len)
sintaks SUBSTRING()
, namun, pengujian saya menunjukkan bahwa ini berfungsi dengan semua bentuk yang berbeda.
Sintaks
Menurut dokumentasi MariaDB, sintaksnya seperti ini:
MID(str,pos,len)
Namun, saya menemukan bahwa ini berfungsi dengan formulir berikut (yang merupakan formulir yang sama dengan SUBSTRING()
mendukung):
MID(str,pos),
MID(str FROM pos),
MID(str,pos,len),
MID(str FROM pos FOR len)
Dimana str
adalah string, pos
adalah posisi awal substring, dan len
adalah jumlah karakter yang akan diekstrak.
Contoh
Berikut ini contoh dasarnya:
SELECT MID('Drink your beer', 7);
Hasil:
+---------------------------+ | MID('Drink your beer', 7) | +---------------------------+ | your beer | +---------------------------+
Berikut contoh yang sama, tetapi menggunakan FROM
sintaks:
SELECT MID('Drink your beer' FROM 7);
Hasil:
+-------------------------------+ | MID('Drink your beer' FROM 7) | +-------------------------------+ | your beer | +-------------------------------+
Panjang Substring
Berikut adalah contoh yang menentukan panjang substring yang akan diekstrak. Ini adalah satu-satunya sintaks yang dikutip oleh dokumentasi MariaDB untuk MID()
fungsi.
SELECT MID('Drink your beer', 7, 4);
Hasil:
+------------------------------+ | MID('Drink your beer', 7, 4) | +------------------------------+ | your | +------------------------------+your Anda
Dan ini dia menggunakan FROM...FOR
sintaks:
SELECT MID('Drink your beer' FROM 7 FOR 4);
Hasil:
+-------------------------------------+ | MID('Drink your beer' FROM 7 FOR 4) | +-------------------------------------+ | your | +-------------------------------------+
Posisi Negatif
Menentukan nilai negatif untuk posisi menyebabkan posisi awal dihitung mundur dari akhir string:
SELECT MID('Drink your beer', -9);
Hasil:
+----------------------------+ | MID('Drink your beer', -9) | +----------------------------+ | your beer | +----------------------------+
Posisi negatif juga dapat digunakan saat menggunakan FROM
sintaks:
SELECT MID('Drink your beer' FROM -9 FOR 4);
Hasil:
+--------------------------------------+ | MID('Drink your beer' FROM -9 FOR 4) | +--------------------------------------+ | your | +--------------------------------------+your Anda
Dalam hal ini saya juga mengatur panjang untuk substring.
Mode Oracle
Saat dalam mode Oracle, posisi awal 0
(nol) diperlakukan sebagai 1
. Namun, posisi awal 1
juga diperlakukan sebagai 1
.
Ini berbeda dengan mode lain, di mana 0
akan mengembalikan string kosong.
Contoh:
SET SQL_MODE=ORACLE;
SELECT
MID('Drink your beer', 0) AS "0",
MID('Drink your beer', 1) AS "1";
Hasil:
+-----------------+-----------------+ | 0 | 1 | +-----------------+-----------------+ | Drink your beer | Drink your beer | +-----------------+-----------------+
Ini dia dalam mode default:
SET SQL_MODE=DEFAULT;
SELECT
MID('Drink your beer', 0) AS "0",
MID('Drink your beer', 1) AS "1";
Hasil:
+------+-----------------+ | 0 | 1 | +------+-----------------+ | | Drink your beer | +------+-----------------+
Argumen Null
Jika salah satu (atau semua) argumen adalah null
, MID()
fungsi mengembalikan null
:
SELECT
MID(null, 3, 3),
MID('Beer', null, 3),
MID('Beer', 3, null),
MID(null, null, null);
Hasil:
+-----------------+----------------------+----------------------+-----------------------+ | MID(null, 3, 3) | MID('Beer', null, 3) | MID('Beer', 3, null) | MID(null, null, null) | +-----------------+----------------------+----------------------+-----------------------+ | NULL | NULL | NULL | NULL | +-----------------+----------------------+----------------------+-----------------------+
Argumen Tidak Ada
Memanggil MID()
tanpa meneruskan argumen apa pun menghasilkan kesalahan:
SELECT MID();
Hasil:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1