Dưới đây là một ví dụ về trả lại các hàng chỉ chứa các ký tự không phải chữ và số trong SQLite.
Các ký tự không phải chữ và số bao gồm các ký tự dấu câu như [email protected]#&()–[{}]:;',?/*
và các ký hiệu như `~$^+=<>“
, cũng như các ký tự khoảng trắng như khoảng trắng hoặc ký tự tab.
Dữ liệu Mẫu
Chúng tôi sẽ sử dụng dữ liệu sau cho các ví dụ của chúng tôi:
SELECT c1 FROM t1;
Kết quả:
+----------------------+ | c1 | +----------------------+ | Music | | Live Music | | Café | | Café Del Mar | | 100 Cafés | | [email protected] | | 1 + 1 | | () | | [email protected]#&()–[{}]:;',?/* | | `~$^+=<>“ | | $1.50 | | Player 456 | | 007 | | NULL | | | | é | | É | | é 123 | | ø | | ø 123 | +----------------------+
Chúng ta có thể sử dụng REGEXP
toán tử với một biểu thức chính quy để trả về các hàng chỉ chứa các ký tự không phải chữ và số:
SELECT c1 FROM t1
WHERE c1 NOT REGEXP '[A-Za-z0-9]';
Kết quả:
+----------------------+ | c1 | +----------------------+ | () | | [email protected]#&()–[{}]:;',?/* | | `~$^+=<>“ | | | | é | | É | | ø | +----------------------+
Trong trường hợp này, phạm vi loại trừ của tôi không bao gồm các ký tự chữ và số như é
, É
và ø
. Ví dụ sau mở rộng phạm vi để loại trừ các ký tự đó khỏi kết quả:
SELECT c1 FROM t1
WHERE c1 NOT REGEXP '[A-Za-zÀ-Þß-ÿ0-9]';
Kết quả:
() [email protected]#&()–[{}]:;',?/* `~$^+=<>“
Bảng của chúng tôi cũng chứa một hàng với chuỗi trống. Đây là một ký tự không phải là chữ và số, vì vậy nó được trả về trong kết quả ở trên. Chúng tôi cũng có thể sử dụng NULLIF()
hàm để loại trừ chuỗi trống khỏi đầu ra:
SELECT c1 FROM t1
WHERE NULLIF(c1, '') NOT REGEXP '[A-Za-zÀ-Þß-ÿ0-9]';
Kết quả:
() [email protected]#&()–[{}]:;',?/* `~$^+=<>“