SQL Server 2008 запрашивает для нахождения строк, содержащих неалфавитно-цифровые символы в столбце

Меня на самом деле спросили это самого несколько недель назад, тогда как я знаю точно, как сделать это с SP или UDF, но я задавался вопросом, был ли быстрый и простой способ сделать это без этих методов. Я предполагаю, что существует, и я просто не могу найти его.

Мнение, которое я должен высказать, - то, что, хотя мы знаем то, какие символы позволяются (a-z, A-Z, 0-9) мы не хотим указывать то, что не позволяется (# @! $ и т.д....). Кроме того, мы хотим вытянуть строки, которые имеют запрещенные символы так, чтобы это могло быть перечислено пользователю для фиксации (поскольку мы не имеем никакого контроля над входным процессом, мы ничего не можем сделать в той точке).

Я просмотрел ТАК и Google ранее, но не могло найти что-либо, что сделало то, что я хотел. Я видел много примеров, которые могут сказать Вам, если это содержит алфавитно-цифровые символы или не делает, но что-то, что может вытащить апостроф в предложении, которое я не нашел в форме запросов.

Обратите внимание также, что значения могут быть null или '' (пустой) в этом varchar столбец.

33
задан Tim S. Van Haren 13 September 2016 в 15:03
поделиться

2 ответа

Разве это не сработает?

SELECT * FROM TABLE
WHERE COLUMN_NAME LIKE '%[^a-zA-Z0-9]%'

Настройка

use tempdb
create table mytable ( mycol varchar(40) NULL)

insert into mytable VALUES ('abcd')
insert into mytable VALUES ('ABCD')
insert into mytable VALUES ('1234')
insert into mytable VALUES ('efg%^&hji')
insert into mytable VALUES (NULL)
insert into mytable VALUES ('')
insert into mytable VALUES ('apostrophe '' in a sentence') 

SELECT * FROM mytable
WHERE mycol LIKE '%[^a-zA-Z0-9]%'

drop table mytable 

Результаты

mycol
----------------------------------------
efg%^&hji
apostrophe ' in a sentence
62
ответ дан 27 November 2019 в 17:59
поделиться

Сервер SQL имеет очень ограниченную поддержку Regex. Вы можете использовать PATINDEX с чем-то вроде этого

PATINDEX('%[a-zA-Z0-9]%',Col)

Взгляните на PATINDEX (Transact-SQL)

и Сопоставление с образцом в условиях поиска

8
ответ дан 27 November 2019 в 17:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: