Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

3 начина за връщане на редове, които съдържат буквено-цифрови знаци в SQL Server

Ето три примера за връщане на редове, които съдържат буквено-цифрови знаци в SQL Server.

Буквено-цифровите знаци са азбучни и цифрови знаци.

Примерни данни

Да предположим, че имаме следната таблица:

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;

Резултат:

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

Пример 1:Ред съдържа буквено-цифрови данни

Следният код връща редове, които съдържат буквено-цифрови знаци (и може да съдържат небуквени и цифрови знаци):

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

Резултат:

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

Пример 2:Ред съдържа САМО буквено-цифрови данни

Следният код връща редове, които съдържат само буквено-цифрови знаци:

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

Резултат:

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

Интервалите се считат за небуквени и цифрови. Можем да включим интервали, като коригираме кода към следното:

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

Резултат:

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

Пример 3:Алтернативен метод

Като алтернатива можем да използваме PATINDEX() функция за постигане на същия резултат.

Следният код връща редове, които съдържат само буквено-цифрови знаци:

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

Резултат:

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

И с интервали:

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

Резултат:

+--------------+
| c1           |
|--------------|
| Music        |
| Live Music   |
| Café         |
| Café Del Mar |
| 100 Cafés    |
| 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. ODBC заявка на MS SQL Server, връщаща първите 255 знака само в PHP PDO (FreeTDS)

  2. @@DATEFIRST – Вземете първия ден от седмицата в SQL Server

  3. Как да коригирате „Преобразуването не бе успешно при преобразуване на стойността в тип данни“ в SQL Server

  4. Как да АКТУАЛИЗИРАТЕ от SELECT в SQL Server

  5. преобразуването на тип данни varchar в тип данни за дата и час води до стойност извън диапазона