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

Tìm nạp một bản ghi cụ thể từ một cột có các giá trị chuỗi (chuỗi, số và ký tự đặc biệt) trong MySQL

Đối với điều này, bạn có thể sử dụng ORDER BY CAST (). Hãy để chúng tôi xem một ví dụ -

mysql> create table DemoTable2006
(
   UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   UserCode    varchar(20)
);
Query OK, 0 rows affected (1.14 sec)

Chèn một số bản ghi vào bảng bằng lệnh chèn -

mysql> insert into DemoTable2006(UserCode) values('John_12');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable2006(UserCode) values('John_34');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable2006(UserCode) values('John_56');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable2006(UserCode) values('Chris_101');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable2006(UserCode) values('Chris_103');
Query OK, 1 row affected (0.37 sec)
mysql> insert into DemoTable2006(UserCode) values('Chris_106');
Query OK, 1 row affected (0.07 sec)

Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select -

mysql> select * from DemoTable2006;

Điều này sẽ tạo ra kết quả sau -

+--------+-----------+
| UserId | UserCode  |
+--------+-----------+
|      1 | John_12   |
|      2 | John_34   |
|      3 | John_56   |
|      4 | Chris_101 |
|      5 | Chris_103 |
|      6 | Chris_106 |
+--------+-----------+
6 rows in set (0.00 sec)

Đây là truy vấn để tìm nạp một bản ghi cụ thể từ một cột -

mysql> select * from DemoTable2006
   where UserCode like 'John%'
   order by cast(substring(UserCode from 7) as  signed) desc
   limit 1;

Điều này sẽ tạo ra kết quả sau -

+--------+----------+
| UserId | UserCode |
+--------+----------+
|      3 | John_56  |
+--------+----------+
1 row in set (0.00 sec)