MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

2 cách trả về hàng chỉ chứa các ký tự không phải chữ và số trong MariaDB

Dưới đây là hai phương pháp để trả về các hàng chỉ chứa các ký tự không phải chữ và số trong MariaDB.

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:

CREATE TABLE t1 (
    c1 varchar(255) NULL
    );

INSERT INTO t1 VALUES
    ('Music'),
    ('Live Music'),
    ('Café'),
    ('Café Del Mar'),
    ('100 Cafés'),
    ('[email protected]'),
    ('1 + 1'),
    ('()'),
    ('[email protected]#&()–[{}]:;'',?/*'),
    ('`~$^+=<>“'),
    ('$1.50'),
    ('Player 456'),
    ('007'),
    (null),
    (''),
    ('é'),
    ('É'),
    ('é 123'),
    ('ø'),
    ('ø 123');
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                |
+----------------------+

Tùy chọn 1:So sánh với [:alnum:]

Khả năng biểu thức chính quy của MariaDB bao gồm hỗ trợ cho các lớp ký tự POSIX. Do đó, chúng ta có thể sử dụng [:alnum:] Lớp ký tự POSIX trong biểu thức chính quy của chúng tôi để tìm các hàng chỉ chứa các ký tự chữ và số, sau đó phủ định điều đó bằng NOT nhà điều hành.

SELECT c1 FROM t1 
WHERE c1 NOT REGEXP '[[:alnum:]]';

Kết quả:

+----------------------+
| c1                   |
+----------------------+
| ()                   |
| [email protected]#&()–[{}]:;',?/*   |
| `~$^+=<>“            |
|                      |
+----------------------+

Nếu bạn cần loại trừ một ký tự cụ thể, bạn luôn có thể sử dụng NULLIF() hàm số.

Ví dụ:hãy loại trừ chuỗi trống khỏi hàng cuối cùng:

SELECT c1 FROM t1 
WHERE NULLIF(c1, '') NOT REGEXP '[[:alnum:]]';

Kết quả:

+----------------------+
| c1                   |
+----------------------+
| ()                   |
| [email protected]#&()–[{}]:;',?/*   |
| `~$^+=<>“            |
+----------------------+

Tùy chọn 2:Chỉ định một phạm vi ký tự

Một cách khác để làm điều đó là chỉ định một dải ký tự trong biểu thức chính quy của bạn.

Ví dụ:

SELECT c1 FROM t1 
WHERE c1 NOT REGEXP '[A-Za-z0-9]';

Kết quả:

+----------------------+
| c1                   |
+----------------------+
| ()                   |
| [email protected]#&()–[{}]:;',?/*   |
| `~$^+=<>“            |
|                      |
| é                    |
| É                    |
| ø                    |
+----------------------+

Và để loại bỏ chuỗi trống:

SELECT c1 FROM t1
WHERE NULLIF(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à do đó đầu ra không phải là một biểu diễn thực sự của các ký tự không phải chữ và số. Điều đó nói rằng, ít nhất phương pháp này cung cấp cho bạn tùy chọn để chỉ định các ký tự chính xác mà bạn muốn bao gồm hoặc loại trừ khỏi kết quả.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2 Cách Lấy Tên Tháng Ngắn Từ Một Ngày Trong MariaDB

  2. Sử dụng Công cụ lưu trữ Aria với Máy chủ MariaDB

  3. Cách ELT () hoạt động trong MariaDB

  4. Tối đa hóa hiệu quả truy vấn cơ sở dữ liệu cho MySQL - Phần một

  5. Các phương pháp hay nhất trong cơ sở dữ liệu chia tỷ lệ:Phần thứ hai