Как определить, содержит ли поле varchar в SQL какие-либо числовые символы?

Я работаю над проектом, где мы должны выяснить, если данное поле потенциально, название компании и адрес.

делая очень широкий размах, мы исходим из предположения, что если это поле не содержит номеров, скорее всего, это имя против адреса улицы (мы стремимся к 80%, зная, что некоторые из них придется делать вручную).

Итак, теперь к вопросу. Данный стол с, для простоты, одним столбец varchar (100), как я могу найти те записи, у которых нет числовых символов в любой позиции в поле?

например:

"Main Street, Suite 10A" --Do not return this.
"A++ Billing" --Should be returned
"XYZ Corporation" --Should be returned
"100 First Ave, Apt 20" --Should not be returned

спасибо заранее!

5 ответов


Sql Server допускает синтаксис, подобный регулярному выражению для range [0-9] или Set [0123456789] к LIKE оператор, который можно использовать с подстановочным знаком any string (%). Например:

select * from Address where StreetAddress not like '%[0-9]%';

шаблон % в начале like очевидно, повредит производительности (скорее всего, сканирование), но в вашем случае это кажется неизбежным.

еще одна ссылка MSDN.


select * from table where column not like '%[0-9]%'

этот запрос возвращает все строки в таблице, где столбец не содержит цифры от 0 до 9.


Мне нравится простой подход regex, но для обсуждения упомянем эту альтернативу, которая использует функция patindex.

SELECT InvoiceNumber from Invoices WHERE PATINDEX('%[0-9]%', InvoiceNumber) = 0

этот запрос, чтобы перечислить таблицы, созданные с числовыми символами

select * from SYSOBJECTS where xtype='u' and  name  like '%[0-9]%'

это сработало для меня .

select total_employee_count from company_table where total_employee_count  like  '%[^0-9]%' 

это вернуло все строки, содержащие не числовые значения, включая 2-3 ..