MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Cách MID () hoạt động trong MariaDB

Trong MariaDB, MID() là từ đồng nghĩa với SUBSTRING() . Nó trả về một chuỗi con từ một chuỗi đã cho.

Theo tài liệu MariaDB, nó là từ đồng nghĩa với SUBSTRING(str,pos,len) cú pháp của SUBSTRING() tuy nhiên, các thử nghiệm của tôi cho thấy nó hoạt động với tất cả các dạng khác nhau.

Cú pháp

Theo tài liệu MariaDB, cú pháp như sau:

MID(str,pos,len)

Tuy nhiên, tôi nhận thấy rằng nó hoạt động với các biểu mẫu sau (giống với các biểu mẫu SUBSTRING() hỗ trợ):

MID(str,pos), 
MID(str FROM pos), 
MID(str,pos,len),
MID(str FROM pos FOR len)

Ở đâu str là chuỗi, pos là vị trí bắt đầu của chuỗi con và len là số ký tự cần trích xuất.

Ví dụ

Đây là một ví dụ cơ bản:

SELECT MID('Drink your beer', 7);

Kết quả:

+---------------------------+
| MID('Drink your beer', 7) |
+---------------------------+
| your beer                 |
+---------------------------+

Đây là ví dụ tương tự, nhưng sử dụng FROM cú pháp:

SELECT MID('Drink your beer' FROM 7);

Kết quả:

+-------------------------------+
| MID('Drink your beer' FROM 7) |
+-------------------------------+
| your beer                     |
+-------------------------------+

Độ dài chuỗi con

Dưới đây là một ví dụ chỉ định độ dài của chuỗi con cần trích xuất. Đây là cú pháp duy nhất mà tài liệu MariaDB trích dẫn cho MID() chức năng.

SELECT MID('Drink your beer', 7, 4);

Kết quả:

+------------------------------+
| MID('Drink your beer', 7, 4) |
+------------------------------+
| your                         |
+------------------------------+

Và ở đây nó đang sử dụng FROM...FOR cú pháp:

SELECT MID('Drink your beer' FROM 7 FOR 4);

Kết quả:

+-------------------------------------+
| MID('Drink your beer' FROM 7 FOR 4) |
+-------------------------------------+
| your                                |
+-------------------------------------+

Vị trí phủ định

Việc chỉ định giá trị âm cho vị trí khiến vị trí bắt đầu được đếm ngược so với cuối chuỗi:

SELECT MID('Drink your beer', -9);

Kết quả:

+----------------------------+
| MID('Drink your beer', -9) |
+----------------------------+
| your beer                  |
+----------------------------+

Vị trí phủ định cũng có thể được sử dụng khi sử dụng FROM cú pháp:

SELECT MID('Drink your beer' FROM -9 FOR 4);

Kết quả:

+--------------------------------------+
| MID('Drink your beer' FROM -9 FOR 4) |
+--------------------------------------+
| your                                 |
+--------------------------------------+

Trong trường hợp này, tôi cũng đặt độ dài cho chuỗi con.

Chế độ Oracle

Khi ở chế độ Oracle, vị trí bắt đầu của 0 (không) được coi là 1 . Tuy nhiên, vị trí bắt đầu của 1 cũng được coi là 1 .

Điều này trái ngược với các chế độ khác, trong đó 0 sẽ trả về một chuỗi trống.

Ví dụ:

SET SQL_MODE=ORACLE;
SELECT 
    MID('Drink your beer', 0) AS "0",
    MID('Drink your beer', 1) AS "1";

Kết quả:

+-----------------+-----------------+
| 0               | 1               |
+-----------------+-----------------+
| Drink your beer | Drink your beer |
+-----------------+-----------------+

Đây là chế độ mặc định:

SET SQL_MODE=DEFAULT;
SELECT 
    MID('Drink your beer', 0) AS "0",
    MID('Drink your beer', 1) AS "1";

Kết quả:

+------+-----------------+
| 0    | 1               |
+------+-----------------+
|      | Drink your beer |
+------+-----------------+

Đối số rỗng

Nếu bất kỳ (hoặc tất cả) đối số null , MID() hàm trả về null :

SELECT 
    MID(null, 3, 3),
    MID('Beer', null, 3),
    MID('Beer', 3, null),
    MID(null, null, null);

Kết quả:

+-----------------+----------------------+----------------------+-----------------------+
| MID(null, 3, 3) | MID('Beer', null, 3) | MID('Beer', 3, null) | MID(null, null, null) |
+-----------------+----------------------+----------------------+-----------------------+
| NULL            | NULL                 | NULL                 | NULL                  |
+-----------------+----------------------+----------------------+-----------------------+

Thiếu đối số

Gọi MID() mà không chuyển bất kỳ đối số nào dẫn đến lỗi:

SELECT MID();

Kết quả:

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. Cần tìm gì nếu Bản sao MySQL của bạn đang bị trễ

  2. So sánh tính khả dụng cao của cơ sở dữ liệu - MySQL / MariaDB Replication so với Oracle Data Guard

  3. Cách TRIM_ORACLE () hoạt động trong MariaDB

  4. Cách NVL () hoạt động trong MariaDB

  5. Cách PI () hoạt động trong MariaDB