MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

2 sposoby zwracania wierszy zawierających tylko znaki niealfanumeryczne w MariaDB

Poniżej znajdują się dwie metody zwracania wierszy zawierających tylko znaki niealfanumeryczne w MariaDB.

Znaki inne niż alfanumeryczne obejmują znaki interpunkcyjne, takie jak [email protected]#&()–[{}]:;',?/* i symbole, takie jak `~$^+=<>“ , a także znaki odstępu, takie jak spacja lub tabulatory.

Przykładowe dane

W naszych przykładach użyjemy następujących danych:

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;

Wynik:

+----------------------+
| 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                |
+----------------------+

Opcja 1:Porównaj z [:alnum:]

Funkcja wyrażeń regularnych MariaDB obejmuje obsługę klas znaków POSIX. Dlatego możemy użyć [:alnum:] Klasa znaków POSIX w naszych wyrażeniach regularnych, aby znaleźć wiersze zawierające tylko znaki alfanumeryczne, a następnie zanegować to za pomocą NOT operatora.

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

Wynik:

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

Jeśli chcesz wykluczyć określony znak, zawsze możesz użyć NULLIF() funkcjonować.

Na przykład wykluczmy pusty ciąg z ostatniego wiersza:

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

Wynik:

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

Opcja 2:Określ zakres znaków

Innym sposobem na to jest określenie zakresu znaków w wyrażeniu regularnym.

Przykład:

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

Wynik:

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

Aby usunąć pusty ciąg:

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

Wynik:

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

W tym przypadku mój zakres wykluczeń nie obejmował znaków alfanumerycznych, takich jak é , É i ø , a więc dane wyjściowe nie są prawdziwą reprezentacją znaków niealfanumerycznych. To powiedziawszy, przynajmniej ta metoda daje możliwość określenia dokładnych znaków, które chcesz uwzględnić lub wykluczyć z wyniku.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa SLEEP() w MariaDB

  2. Serwer MariaDB 10.0.33 jest już dostępny

  3. MariaDB JSON_CONTAINS_PATH () Wyjaśnione

  4. Wprowadzenie do administracji MaxScale Korzystanie z maxctrl dla klastra MariaDB

  5. Równoważenie obciążenia bazy danych z ProxySQL i AWS Aurora