MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Bagaimana MID() Bekerja di MariaDB

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mendapatkan Nama Hari Singkat dari Tanggal di MariaDB

  2. Bagaimana MariaDB Mencapai Skala Global dengan Xpand

  3. Bagaimana ACOS() Bekerja di MariaDB

  4. Kurangi Detik dari Nilai Datetime di MariaDB

  5. Bagaimana MICROSECOND() Bekerja di MariaDB