Mysql xóa các ký tự không phải ascii

Nếu dữ liệu bạn cần đính kèm lớn hơn 3 MB, bạn nên tạo một kho lưu trữ nén dữ liệu và tệp README mô tả dữ liệu với tên tệp bao gồm số lỗi (tên tệp được đề xuất. mysql-bug-data-73721.zip) và tải một cái lên sftp. tiên tri. com. Tài khoản Oracle Web (SSO) miễn phí (tài khoản bạn sử dụng để đăng nhập lỗi. mysql. com) và cần có máy khách hỗ trợ SFTP để truy cập máy chủ SFTP

Để tải tệp lên sftp. tiên tri. com

  1. Mở ứng dụng khách SFTP và kết nối với sftp.oracle.com. Chỉ định cổng 2021 và thư mục từ xa /support/incoming/
  2. Đăng nhập bằng tài khoản Oracle Web (địa chỉ email) và mật khẩu mới tạo của bạn
  3. Tải kho lưu trữ lên /support/incoming
  4. Khi bạn đã tải tệp lên, hãy thêm nhận xét về lỗi này để thông báo cho chúng tôi về nó
Thí dụ.
mysql> select * 
       from data
       where full_name <> convert(full_name USING cp1257)
0

Ghi chú sử dụng. Thư mục này không thể liệt kê được, có nghĩa là khi bạn đã tải lên tệp của mình, bạn sẽ không thể xem nó. Một tệp không thể được tải lên nhiều lần với cùng một tên tệp. Tên tệp phải được thay đổi trước khi thử tải tệp lên lại. Tên tệp phải luôn bắt đầu bằng tiền tố mysql-bug-. Các tệp được lưu giữ trên máy chủ SFTP trong 7 ngày và sau đó bị xóa vĩnh viễn

Ví dụ. côte-d'ivoire nên được thay thế bằng côte-d-ivoire, sao-tomé nên được thay thế bằng sao-tome

Làm thế nào để tôi đạt được điều này? . Tôi thậm chí không thể tìm kiếm tất cả các trường như vậy bằng cách sử dụng

MySQL là một cơ sở dữ liệu phổ biến cho phép bạn lưu trữ các loại bộ ký tự khác nhau như ASCII, UTF-8, v.v. Đôi khi cơ sở dữ liệu của bạn có thể chứa các ký tự như á, ä, v.v. đó có thể không phải là ký tự ASCII (A-Z, a-z, 0-9). Trong những trường hợp như vậy, làm cách nào để bạn chọn các hàng không chứa các ký tự ASCII?


Cách tìm các ký tự không phải ASCII trong MySQL

Có nhiều cách khác nhau để tìm các ký tự không phải ASCII trong MySQL

Giả sử bạn có cột được gọi là full_name trong dữ liệu bảng chứa các ký tự không phải ASCII thì đây là truy vấn để chọn tất cả các hàng từ dữ liệu chứa các ký tự không phải ASCII. Thay full_name bằng cột muốn kiểm tra, thay data bằng tên bảng muốn kiểm tra

mysql> select * 
       from data
       where full_name <> convert(full_name USING ASCII)

Trong truy vấn trên, về cơ bản, chúng tôi chọn các hàng có giá trị của cột full_name không khớp với giá trị được chuyển đổi ASCII của cột full_name. Chúng ta sử dụng hàm convert() để chuyển đổi cột full_name thành ký tự ASCII. Nó chuyển đổi các ký tự không thể chuyển đổi thành các ký tự thay thế. Vì vậy, các giá trị chưa chuyển đổi và chuyển đổi ASCII sẽ không khớp. Xin lưu ý, hàm convert() chỉ đầu ra của hàm convert được chuyển đổi và cột thực tế trong cơ sở dữ liệu

Bạn có thể sử dụng bất kỳ bộ ký tự nào thay cho ASCII ở trên. Ví dụ: nếu bạn muốn tìm các ký tự không phù hợp với bộ ký tự cp1257, hãy sử dụng truy vấn sau

mysql> select * 
       from data
       where full_name <> convert(full_name USING cp1257)

Ngoài ra, bạn cũng có thể sử dụng các biểu thức chính quy để tìm các ký tự không phải ASCII. Bộ ký tự ASCII được chụp bằng regex [A-Za-z0-9]. Bạn có thể sử dụng biểu thức chính quy này trong truy vấn của mình như được hiển thị bên dưới để tìm các ký tự không phải ASCII

mysql> SELECT * FROM tableName WHERE columnToCheck NOT REGEXP '[A-Za-z0-9]';

Đối với ví dụ của chúng tôi ở trên, truy vấn sẽ là

mysql> SELECT * FROM data WHERE full_name NOT REGEXP '[A-Za-z0-9]';

Bạn cũng có thể tùy chỉnh regex để bao gồm các ký tự nhất định. Ví dụ: nếu bạn không muốn chọn các hàng có dấu gạch dưới, chỉ cần thêm nó vào biểu thức chính quy ở trên

mysql> SELECT * FROM data WHERE full_name NOT REGEXP '[A-Za-z0-9_]';

Trong bài viết ngắn này, chúng ta đã học cách tìm các ký tự không phải ASCII trong MySQL. MySQL hỗ trợ nhiều bộ ký tự và mã hóa khác nhau. Bạn có thể sử dụng các truy vấn trên để tìm các hàng không phù hợp với bộ ký tự được yêu cầu của bạn

Đầu tiên, tạo một hàm được lưu trữ sẽ loại bỏ các ký tự không phải ASCII không mong muốn.
mysql> select * 
       from data
       where full_name <> convert(full_name USING cp1257)
1

mysql> select * 
       from data
       where full_name <> convert(full_name USING cp1257)
2Giờ đây, hàm được lưu trữ trong MySQL này có thể được sử dụng trong bất kỳ truy vấn MySQL nào để xóa chuỗi.
mysql> select * 
       from data
       where full_name <> convert(full_name USING cp1257)
3