Как определить, содержит ли поле varchar в SQL какие-либо числовые символы? - PullRequest
13 голосов
/ 01 декабря 2010

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

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

34 голосов
/ 01 декабря 2010

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

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

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

Другая ссылка на MSDN .

8 голосов
/ 01 декабря 2010

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

SELECT InvoiceNumber from Invoices WHERE PATINDEX('%[0-9]%', InvoiceNumber) = 0
8 голосов
/ 01 декабря 2010
select * from table where column not like '%[0-9]%'

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

3 голосов
/ 20 февраля 2013

Этот запрос для вывода списка таблиц, созданных с помощью цифровых символов

select * from SYSOBJECTS where xtype='u' and  name  like '%[0-9]%'
2 голосов
/ 31 августа 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...