Trong SQLite, bạn có thể sử dụng instr()
hàm để trả về vị trí của một ký tự nhất định trong một chuỗi.
Hàm chỉ trả về vị trí xuất hiện đầu tiên của ký tự (nếu có).
Nếu ký tự không được tìm thấy, thì nó sẽ trả về 0.
Nếu một trong hai đối số là NULL, thì nó trả về NULL.
Cách thức hoạt động
instr()
hàm chấp nhận hai đối số. Đối số đầu tiên là chuỗi và đối số thứ hai là ký tự bạn muốn tìm trong chuỗi đó.
Nếu cả hai đối số đều là BLOB, thì nó trả về một nhiều hơn số byte trước lần xuất hiện đầu tiên của đối số thứ hai hoặc 0 nếu nó không xảy ra ở bất kỳ đâu trong đối số đầu tiên.
Cú pháp như sau:
inst(X,Y)
-
X
là chuỗi -
Y
là nhân vật
Ví dụ
Đây là một ví dụ để chứng minh.
SELECT instr('Black cat', 'a');
Kết quả:
3
Ở đây, tôi muốn vị trí của chữ cái a .
Trong trường hợp này, chữ cái xuất hiện hai lần và instr()
trả về vị trí của lần xuất hiện đầu tiên.
Một ví dụ về cơ sở dữ liệu
Trong ví dụ này, tôi sẽ sử dụng bảng sau:
ProductId ProductName Price ---------- ------------- ---------- 1 Widget Holder 139.5 2 Blue Widget 10.0 3 Red Widget 10.0 4 Green Widget 10.0 5 Widget Stick 89.75 6 Foo Cap 11.99
Tôi sẽ tìm kiếm Tên sản phẩm cột cho một lá thư.
SELECT
ProductName,
instr(ProductName, 'd')
FROM Products;
Kết quả:
ProductName instr(ProductName, 'd') ------------- ----------------------- Widget Holder 3 Blue Widget 8 Red Widget 3 Green Widget 9 Widget Stick 3 Foo Cap 0
Lưu ý rằng hàng cuối cùng không có chữ cái và vì vậy 0 đã được trả lại cho hàng đó.
Giá trị NULL
Như đã đề cập, nếu bất kỳ đối số nào là NULL, thì NULL được trả về.
SELECT
instr(NULL, 'a'),
instr('Black cat', NULL);
Kết quả:
instr(NULL, 'a') instr('Black cat', NULL) ---------------- ------------------------