Di MariaDB, SUBSTR()
adalah sinonim untuk SUBSTRING()
.
Ini adalah fungsi string bawaan yang mengembalikan substring dari string tertentu.
Ini 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:
SUBSTR(str,pos),
SUBSTR(str FROM pos),
SUBSTR(str,pos,len),
SUBSTR(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 SUBSTR('Good doggy', 6);
Hasil:
+-------------------------+ | SUBSTR('Good doggy', 6) | +-------------------------+ | doggy | +-------------------------+
Berikut adalah contoh yang sama, tetapi menggunakan sintaks SQL standar:
SELECT SUBSTR('Good doggy' FROM 6);
Hasil:
+-----------------------------+ | SUBSTR('Good doggy' FROM 6) | +-----------------------------+ | doggy | +-----------------------------+
Panjang Substring
Berikut adalah contoh yang menentukan panjang substring yang akan diekstrak:
SELECT SUBSTR('Good doggy', 6, 3);
Hasil:
+----------------------------+ | SUBSTR('Good doggy', 6, 3) | +----------------------------+ | dog | +----------------------------+
Dan ini dia menggunakan sintaks SQL standar:
SELECT SUBSTR('Good doggy' FROM 6 FOR 3);
Hasil:
+-----------------------------------+ | SUBSTR('Good doggy' FROM 6 FOR 3) | +-----------------------------------+ | dog | +-----------------------------------+
Posisi Negatif
Menentukan nilai negatif untuk posisi menyebabkan posisi awal dihitung mundur dari akhir string:
SELECT SUBSTR('Good doggy', -5);
Hasil:
+--------------------------+ | SUBSTR('Good doggy', -5) | +--------------------------+ | doggy | +--------------------------+
Posisi negatif juga dapat digunakan saat menggunakan sintaks SQL standar:
SELECT SUBSTR('Good doggy' FROM -5 FOR 3);
Hasil:
+------------------------------------+ | SUBSTR('Good doggy' FROM -5 FOR 3) | +------------------------------------+ | dog | +------------------------------------+
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
SUBSTR('Good doggy', 0) AS "0",
SUBSTR('Good doggy', 1) AS "1";
Hasil:
+------------+------------+ | 0 | 1 | +------------+------------+ | Good doggy | Good doggy | +------------+------------+
Ini dia dalam mode default:
SET SQL_MODE=DEFAULT;
SELECT
SUBSTR('Good doggy', 0) AS "0",
SUBSTR('Good doggy', 1) AS "1";
Hasil:
+------+------------+ | 0 | 1 | +------+------------+ | | Good doggy | +------+------------+
Argumen Null
Jika salah satu (atau semua) argumen adalah null
, SUBSTR()
fungsi mengembalikan null
:
SELECT
SUBSTR(null, 3, 3),
SUBSTR('Doggy', null, 3),
SUBSTR('Doggy', 3, null),
SUBSTR(null, null, null);
Hasil:
+--------------------+--------------------------+--------------------------+--------------------------+ | SUBSTR(null, 3, 3) | SUBSTR('Doggy', null, 3) | SUBSTR('Doggy', 3, null) | SUBSTR(null, null, null) | +--------------------+--------------------------+--------------------------+--------------------------+ | NULL | NULL | NULL | NULL | +--------------------+--------------------------+--------------------------+--------------------------+
Argumen Tidak Ada
Memanggil SUBSTR()
tanpa memberikan argumen apa pun menghasilkan kesalahan:
SELECT SUBSTR();
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