Computer >> Máy Tính >  >> Lập trình >> MySQL

Lấy chỉ mục của chuỗi con cuối cùng trong một chuỗi đã cho trong MySQL?

Để lấy chỉ mục của chuỗi con cuối cùng trong một chuỗi nhất định, hãy sử dụng hàm char_length (). Đầu tiên, chúng ta cần tính độ dài chuỗi và trừ độ dài chuỗi con cuối cùng khỏi toàn bộ độ dài. Sự khác biệt về độ dài là chỉ số của chuỗi con.

Cú pháp

Cú pháp như sau -

select CHAR_LENGTH(yourColumnName) - LOCATE('yourDelimiter ',
REVERSE(yourColumnName))+1 as anyVariableName
from yourTableName;

Để hiểu cú pháp trên, trước tiên chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau -

mysql> create table SubStringIndexDemo
   -> (
   -> Words varchar(200)
   -> );
Query OK, 0 rows affected (0.57 sec)

Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau -

mysql> insert into SubStringIndexDemo values('This is MySQL Query');
Query OK, 1 row affected (0.13 sec)

mysql> insert into SubStringIndexDemo values('MySQL is a Relational Database');
Query OK, 1 row affected (0.34 sec)

mysql> insert into SubStringIndexDemo values('Java is a programming language');
Query OK, 1 row affected (0.11 sec)

mysql> insert into SubStringIndexDemo values('Spring is a Framework');
Query OK, 1 row affected (0.20 sec)

Hiển thị tất cả các bản ghi từ bảng bằng lệnh select. Truy vấn như sau -

mysql> select *from SubStringIndexDemo;

Đầu ra

+--------------------------------+
| Words                          |
+--------------------------------+
| This is MySQL Query            |
| MySQL is a Relational Database |
| Java is a programming language |
| Spring is a Framework          |
+--------------------------------+
4 rows in set (0.00 sec)

Đây là truy vấn có thể được sử dụng để lấy chỉ mục của chuỗi con cuối cùng ::

mysql> select CHAR_LENGTH(Words) - LOCATE(' ', REVERSE(Words))+1 as
PositionOfLastSubstring
   -> from SubStringIndexDemo;

Đầu ra

+-------------------------+
| PositionOfLastSubstring |
+-------------------------+
|                      14 |
|                      22 |
|                      22 |
|                      12 |
+-------------------------+
4 rows in set (0.00 sec)