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

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

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

Znaki alfanumeryczne to znaki alfabetu i znaki numeryczne.

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 do znajdowania wierszy zawierających znaki alfanumeryczne.

SELECT c1 FROM t1 
WHERE c1 REGEXP '^[[:alnum:]]+$';

Wynik:

+-------+
| c1    |
+-------+
| Music |
| Café  |
| 007   |
| é     |
| É     |
| ø     |
+-------+

To zwróciło tylko te wiersze, które zawierają tylko znaki alfanumeryczne. Jeśli wiersz zawiera zarówno znaki alfanumeryczne, jak i niealfanumeryczne, nie jest on zwracany.

Zwróć uwagę, że znak spacji jest uważany za niealfanumeryczny, więc jeśli chcemy uwzględnić spacje, możemy to zrobić:

SELECT c1 FROM t1 
WHERE c1 REGEXP '^[[:alnum:] ]+$';

Wynik:

+---------------+
| c1            |
+---------------+
| Music         |
| Live Music    |
| Café          |
| Café Del Mar  |
| 100 Cafés     |
| Player 456    |
| 007           |
| é             |
| É             |
| é 123         |
| ø             |
| ø 123         |
+---------------+

Aby zwrócić wszystkie wiersze, które zawierają znaki alfanumeryczne (nawet jeśli wiersz zawiera również znaki niealfanumeryczne), możemy to zrobić:

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

Wynik:

+-------------------+
| c1                |
+-------------------+
| Music             |
| Live Music        |
| Café              |
| Café Del Mar      |
| 100 Cafés         |
| [email protected] |
| 1 + 1             |
| $1.50             |
| Player 456        |
| 007               |
| é                 |
| É                 |
| é 123             |
| ø                 |
| ø 123             |
+-------------------+

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 REGEXP '^[A-Za-z0-9]+$';

Wynik:

+-------+
| c1    |
+-------+
| Music |
| 007   |
+-------+

Zauważysz, że zwróciło to mniej wierszy niż w naszym pierwszym przykładzie. To dlatego, że nie dodałem é , É lub ø znaków w moim zakresie, więc wszystkie wiersze zawierające te znaki są wykluczane z danych wyjściowych.

Dlatego musisz zachować ostrożność podczas korzystania z tej metody, na wypadek przypadkowego wykluczenia znaków, które powinieneś uwzględnić.

Jednak trzymając się tego zakresu, możemy uwzględnić spacje takie jak:

SELECT c1 FROM t1 
WHERE c1 REGEXP '^[A-Za-z0-9 ]+$';

Wynik:

+------------+
| c1         |
+------------+
| Music      |
| Live Music |
| Player 456 |
| 007        |
+------------+

Możemy użyć poniższych, aby uwzględnić wszystkie wiersze, które zawierają znaki z naszego zakresu (nawet jeśli zawierają również znaki spoza tego zakresu):

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

Wynik:

+-------------------+
| c1                |
+-------------------+
| Music             |
| Live Music        |
| Café              |
| Café Del Mar      |
| 100 Cafés         |
| [email protected] |
| 1 + 1             |
| $1.50             |
| Player 456        |
| 007               |
| é 123             |
| ø 123             |
+-------------------+

  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 zainstalować MariaDB 10 na RHEL 8?

  2. 3 sposoby na zwrot modułu Modulo w MariaDB

  3. 2 sposoby na zastąpienie podciągu w MariaDB

  4. Jak działa funkcja EXTRACTVALUE() w MariaDB

  5. Nasze najpopularniejsze posty na blogu o bazach danych w 2017 r.