Как определить, содержит ли поле 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
очевидно, повредит производительности (скорее всего, сканирование), но в вашем случае это кажется неизбежным.
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 ..