Trong MariaDB, POSITION()
là một hàm chuỗi tích hợp trả về vị trí của lần xuất hiện đầu tiên của một chuỗi con trong một chuỗi khác. Nó là một phần của ODBC 3.0.
POSITION(substr IN str)
là từ đồng nghĩa với LOCATE(substr,str)
.
POSITION()
cũng tương tự với INSTR()
, ngoại trừ POSITION()
đó sử dụng IN
cú pháp và thứ tự đối số được đảo ngược giữa hai hàm này.
Cú pháp
Cú pháp như sau:
POSITION(substr IN str)
Ở đâu str
là chuỗi và substr
là chuỗi con để trả về vị trí của.
Ví dụ
Đây là một ví dụ cơ bản:
SELECT POSITION('cute' IN 'My cute dog');
Kết quả:
+-----------------------------------+ | POSITION('cute' IN 'My cute dog') | +-----------------------------------+ | 4 | +-----------------------------------+
Phân biệt chữ hoa chữ thường
POSITION()
thực hiện tìm kiếm không phân biệt chữ hoa chữ thường:
SELECT POSITION('CUTE' IN 'My cute dog');
Kết quả:
+-----------------------------------+ | POSITION('CUTE' IN 'My cute dog') | +-----------------------------------+ | 4 | +-----------------------------------+
Nhiều lần xuất hiện
Nếu chuỗi con xảy ra nhiều lần, chỉ vị trí của chuỗi đầu tiên (từ vị trí bắt đầu) được trả về:
SELECT POSITION('cute' IN 'My cute dog is SOOOO cute!');
Kết quả:
+--------------------------------------------------+ | POSITION('cute' IN 'My cute dog is SOOOO cute!') | +--------------------------------------------------+ | 4 | +--------------------------------------------------+
Khớp một phần
Nếu chuỗi con là một phần của một từ lớn hơn, thì nó vẫn là một kết quả khớp:
SELECT POSITION('dog' IN 'My doggy is SOOO cute!');
Kết quả:
+---------------------------------------------+ | POSITION('dog' IN 'My doggy is SOOO cute!') | +---------------------------------------------+ | 4 | +---------------------------------------------+
Nhưng nếu chuỗi chỉ là một phần của chuỗi con, thì đó không phải là một chuỗi khớp:
SELECT POSITION('doggy' IN 'My dog is SOOO cute!');
Kết quả:
+---------------------------------------------+ | POSITION('doggy' IN 'My dog is SOOO cute!') | +---------------------------------------------+ | 0 | +---------------------------------------------+
Dấu cách
Ký tự khoảng trắng vẫn là một chuỗi, vì vậy chúng tôi có thể bao gồm khoảng trắng trong chuỗi con, ngay cả khi đó là ký tự duy nhất:
SELECT POSITION('' IN 'My dog');
Kết quả:
+---------------------------+ | POSITION(' ' IN 'My dog') | +---------------------------+ | 3 | +---------------------------+
Chuỗi trống
Dưới đây là những gì sẽ xảy ra khi chuỗi con là một chuỗi rỗng:
SELECT POSITION('' IN 'My dog');
Kết quả:
+--------------------------+ | POSITION('' IN 'My dog') | +--------------------------+ | 1 | +--------------------------+
Không phù hợp
Nếu không tìm thấy chuỗi con trong chuỗi, hãy POSITION()
trả về 0
:
SELECT position('cat' IN 'My dog');
Kết quả:
+-----------------------------+ | position('cat' IN 'My dog') | +-----------------------------+ | 0 | +-----------------------------+
Đối số rỗng
Cung cấp null
đối với bất kỳ đối số nào dẫn đến null
:
SELECT
POSITION(null IN 'My dog'),
POSITION('dog' IN null);
Kết quả:
+----------------------------+-------------------------+ | POSITION(null IN 'My dog') | POSITION('dog' IN null) | +----------------------------+-------------------------+ | NULL | NULL | +----------------------------+-------------------------+
Cung cấp số lượng lập luận sai
Gọi POSITION()
với số lượng đối số sai hoặc không chuyển bất kỳ đối số nào dẫn đến lỗi:
SELECT POSITION('dog');
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