sql >> Databasteknik >  >> RDS >> Sqlserver

3 sätt att returnera rader som innehåller alfanumeriska tecken i SQL Server

Här är tre exempel på returnerande rader som innehåller alfanumeriska tecken i SQL Server.

Alfanumeriska tecken är alfabetiska och numeriska tecken.

Exempeldata

Anta att vi har följande tabell:

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;

Resultat:

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

Exempel 1:Rad innehåller alfanumeriska data

Följande kod returnerar rader som innehåller alfanumeriska tecken (och kan även innehålla icke-alfanumeriska tecken):

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

Resultat:

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

Exempel 2:Rad innehåller ENDAST alfanumeriska data

Följande kod returnerar rader som bara innehåller alfanumeriska tecken:

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

Resultat:

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

Mellanslag anses vara icke-alfanumeriska. Vi kan inkludera mellanslag genom att justera koden till följande:

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

Resultat:

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

Exempel 3:En alternativ metod

Vi kan alternativt använda PATINDEX() funktion för att uppnå samma resultat.

Följande kod returnerar rader som bara innehåller alfanumeriska tecken:

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

Resultat:

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

Och med mellanslag:

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

Resultat:

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

  1. Hur lagrar man NULL-värden i datetime-fält i MySQL?

  2. PayPal ODBC-drivrutin

  3. Applikationsanvändare kontra Row Level Security

  4. Använda PHP-MySQL Persistent Connections för att köra WordPress-blogg