Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách tìm ký tự non-ASCII trong MySQL

Ký tự non-ASCII là các ký tự ngoài bảng mã ASCII chuẩn (ví dụ: £, ±, ©...). Sử dụng hàm HEX() kết hợp REGEXP để lọc.

Ví dụ

Tạo bảng NonAsciiDemo:

mysql> CREATE TABLE NonAsciiDemo (NonAscii VARCHAR(100));

mysql> INSERT INTO NonAsciiDemo VALUES(',-'), ('  '), ('£'), ('123abcd£');

Dữ liệu:

+----------+
| NonAscii |
+----------+
| -,-      |
|          |
| £        |
| 123abcd£ |
+----------+

Truy vấn tìm ký tự non-ASCII

SELECT * FROM NonAsciiDemo
WHERE NOT HEX(NonAscii) REGEXP '^([0-7][0-9A-F])*$';

Kết quả (chỉ 2 hàng chứa £):

+----------+
| NonAscii |
+----------+
| £        |
| 123abcd£ |
+----------+

Giải thích Regex

HEX() chuyển chuỗi thành hex. Ký tự ASCII có mã hex từ 00 đến 7F (byte đầu 0-7). Regex '^([0-7][0-9A-F])*$' khớp chuỗi toàn byte ASCII. NOT đảo ngược để tìm chuỗi chứa byte > 7F (non-ASCII).