Di MariaDB, SUBSTRING()
adalah fungsi string bawaan yang mengembalikan substring dari string yang diberikan.
SUBSTRING()
membutuhkan setidaknya dua argumen; string, dan posisi untuk mengekstrak substring dari. Ia juga menerima argumen ketiga opsional yang memungkinkan Anda menentukan berapa lama substring seharusnya.
Sintaks
Sintaksnya mengambil bentuk berikut:
SUBSTRING(str,pos),
SUBSTRING(str FROM pos),
SUBSTRING(str,pos,len),
SUBSTRING(str FROM pos FOR len)
Dimana str
adalah string, pos
adalah posisi awal substring, dan len
adalah jumlah karakter yang akan diekstrak.
Dua formulir yang menggunakan FROM
kata kunci adalah sintaks SQL standar.
Contoh
Berikut ini contoh dasarnya:
SELECT SUBSTRING('Big fat cat', 5);
Hasil:
+-----------------------------+ | SUBSTRING('Big fat cat', 5) | +-----------------------------+ | fat cat | +-----------------------------+
Berikut adalah contoh yang sama, tetapi menggunakan sintaks SQL standar:
SELECT SUBSTRING('Big fat cat' FROM 5);
Hasil:
+---------------------------------+ | SUBSTRING('Big fat cat' FROM 5) | +---------------------------------+ | fat cat | +---------------------------------+
Panjang Substring
Berikut adalah contoh yang menentukan panjang substring yang akan diekstrak:
SELECT SUBSTRING('Big fat cat', 5, 3);
Hasil:
+--------------------------------+ | SUBSTRING('Big fat cat', 5, 3) | +--------------------------------+ | fat | +--------------------------------+
Dan ini dia menggunakan sintaks SQL standar:
SELECT SUBSTRING('Big fat cat' FROM 5 FOR 3);
Hasil:
+---------------------------------------+ | SUBSTRING('Big fat cat' FROM 5 FOR 3) | +---------------------------------------+ | fat | +---------------------------------------+
Posisi Negatif
Menentukan nilai negatif untuk posisi menyebabkan posisi awal dihitung mundur dari akhir string:
SELECT SUBSTRING('Big fat cat', -3);
Hasil:
+------------------------------+ | SUBSTRING('Big fat cat', -3) | +------------------------------+ | cat | +------------------------------+
Posisi negatif juga dapat digunakan saat menggunakan sintaks SQL standar:
SELECT SUBSTRING('Big fat cat' FROM -7 FOR 3);
Hasil:
+----------------------------------------+ | SUBSTRING('Big fat cat' FROM -7 FOR 3) | +----------------------------------------+ | fat | +----------------------------------------+
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
SUBSTRING('Big fat cat', 0) AS "0",
SUBSTRING('Big fat cat', 1) AS "1";
Hasil:
+-------------+-------------+ | 0 | 1 | +-------------+-------------+ | Big fat cat | Big fat cat | +-------------+-------------+
Ini dia dalam mode default:
SET SQL_MODE=DEFAULT;
SELECT
SUBSTRING('Big fat cat', 0) AS "0",
SUBSTRING('Big fat cat', 1) AS "1";
Hasil:
+------+-------------+ | 0 | 1 | +------+-------------+ | | Big fat cat | +------+-------------+
Argumen Null
Jika salah satu (atau semua) argumen adalah null
, SUBSTRING()
fungsi mengembalikan null
:
SELECT
SUBSTRING(null, 3, 3),
SUBSTRING('Coffee', null, 3),
SUBSTRING('Coffee', 3, null),
SUBSTRING(null, null, null);
Hasil:
+-----------------------+------------------------------+------------------------------+-----------------------------+ | SUBSTRING(null, 3, 3) | SUBSTRING('Coffee', null, 3) | SUBSTRING('Coffee', 3, null) | SUBSTRING(null, null, null) | +-----------------------+------------------------------+------------------------------+-----------------------------+ | NULL | NULL | NULL | NULL | +-----------------------+------------------------------+------------------------------+-----------------------------+
Argumen Tidak Ada
Memanggil SUBSTRING()
tanpa meneruskan argumen apa pun menghasilkan kesalahan:
SELECT SUBSTRING();
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