Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

3 façons de renvoyer des lignes contenant des caractères alphanumériques dans SQL Server

Voici trois exemples de retour de lignes contenant des caractères alphanumériques dans SQL Server.

Les caractères alphanumériques sont des caractères alphabétiques et numériques.

Exemple de données

Supposons que nous ayons le tableau suivant :

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;

Résultat :

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

Exemple 1 : la ligne contient des données alphanumériques

Le code suivant renvoie les lignes contenant des caractères alphanumériques (et pouvant également contenir des caractères non alphanumériques) :

SELECT c1 FROM t1
WHERE c1 LIKE '%[a-zA-Z0-9]%';

Résultat :

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

Exemple 2 :la ligne contient UNIQUEMENT des données alphanumériques

Le code suivant renvoie les lignes qui ne contiennent que des caractères alphanumériques :

SELECT c1 FROM t1
WHERE c1 NOT LIKE '%[^a-zA-Z0-9]%'
AND c1 LIKE '%[a-zA-Z0-9]%';

Résultat :

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

Les espaces sont considérés comme non alphanumériques. Nous pouvons inclure des espaces en ajustant le code comme suit :

SELECT c1 FROM t1
WHERE c1 NOT LIKE '%[^a-zA-Z0-9 ]%'
AND c1 LIKE '%[a-zA-Z0-9 ]%';

Résultat :

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

Exemple 3 :Une méthode alternative

Nous pouvons alternativement utiliser le PATINDEX() fonction pour obtenir le même résultat.

Le code suivant renvoie les lignes qui ne contiennent que des caractères alphanumériques :

SELECT c1 FROM t1
WHERE PATINDEX('%[^0-9a-zA-Z]%', c1) = 0 
AND PATINDEX('%[a-zA-Z0-9]%', c1) > 0;

Résultat :

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

Et avec des espaces :

SELECT c1 FROM t1
WHERE PATINDEX('%[^0-9a-zA-Z ]%', c1) = 0 
AND PATINDEX('%[a-zA-Z0-9 ]%', c1) > 0;

Résultat :

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