Подтвердить что ты не робот

Как определить, содержит ли поле 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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 3

Мне нравится простой подход с регулярным выражением, но для обсуждения упомянет эту альтернативу, которая использует PATINDEX.

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

Ответ 4

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

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

Ответ 5

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

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

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