Sử dụng hàm INSERT() của MySQL để chèn ký tự phân cách vào số, sau đó so sánh với cột VARCHAR.
Tham số của INSERT(str, position, number, str2):
| Tham số | Mô tả |
|---|---|
| str | Chuỗi gốc cần sửa đổi |
| position | Vị trí chèn str2 (1-based) |
| number | Số ký tự thay thế (0 = chỉ chèn) |
| str2 | Chuỗi chèn vào |
Tạo bảng demo
mysql> create table DemoTable (
-> Code varchar(100)
-> );
Query OK, 0 rows affected (0.82 sec)
Chèn dữ liệu có định dạng "số/số"
mysql> insert into DemoTable values('958575/98');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('765432/99');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('983456/91');
Query OK, 1 row affected (0.15 sec)
Hiển thị dữ liệu
mysql> select * from DemoTable;
Kết quả
+-----------+ | Code | +-----------+ | 958575/98 | | 765432/99 | | 983456/91 | +-----------+ 3 rows in set (0.00 sec)
Tìm kiếm bằng số nguyên 76543299 (chèn '/' tại vị trí 7)
mysql> select * from DemoTable where Code = INSERT(76543299, 7, 0, '/');
Kết quả - Tìm thấy '765432/99'
+-----------+ | Code | +-----------+ | 765432/99 | +-----------+ 1 row in set (0.00 sec)
Giải thích: INSERT(76543299, 7, 0, '/') lấy số 76543299, tại vị trí 7 chèn '/', không thay thế ký tự nào (number=0) → kết quả '765432/99'.
Cách khác phổ biến hơn: Chuyển đổi cột sang số để so sánh:
WHERE REPLACE(Code, '/', '') = '76543299'Hoặc dùng
CAST/CONVERT nếu định dạng cố định.