Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 проверка строки на нахождение в ней цифр  [new]
Игорь777
Guest
есть таблица в ней колонка (20-ти символьная). все было бы хорошо если бы данный в ней имели сл. вид:
30122810600010167668
30122810300010167337
30122810700010167665
но иногда есть вот такие данные:

3012рарар00010167668
301224443-001в1в7в37
в0в2в8%??655вв67665

НЕ ПОДСКАЖИТЕ КАКИМ ОПЕРАТОРОМ ОТЛОВИТЬ КЛЮЧНЫЕ СТРОКИ?

спасибо
9 авг 04, 11:10    [867941]     Ответить | Цитировать Сообщить модератору
 Re: проверка строки на нахождение в ней цифр  [new]
Trong
Member

Откуда: Novosibirsk
Сообщений: 759
select *
from #t
where cl not like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
9 авг 04, 11:21    [867993]     Ответить | Цитировать Сообщить модератору
 Re: проверка строки на нахождение в ней цифр  [new]
pavelch
Member

Откуда: г. Иваново
Сообщений: 272
воспользуйтесь функцией PATINDEX в условии WHERE, пример ниже возвращает 0 для случая, когда String содержит только цифири и не нулевое значение для всхе остальных:
Declare @String varchar(50)
Set @String = '3000059'
Select PATINDEX('%[^0-9]%',@String)
9 авг 04, 11:21    [867997]     Ответить | Цитировать Сообщить модератору
 Re: проверка строки на нахождение в ней цифр  [new]
a1ex
Member

Откуда: .ua
Сообщений: 369
Игорь777
НЕ ПОДСКАЖИТЕ КАКИМ ОПЕРАТОРОМ ОТЛОВИТЬ КЛЮЧНЫЕ СТРОКИ?

если я правильно понял термин "КЛЮЧНЫЕ", то можно так
declare @a varchar(100), @b varchar(100)
set @a = 'в0в2в8%??655вв67665'
set @b = '30122810700010167665'

select isnumeric(@a), isnumeric(@b)

только нужно при этом учитывать, что
select isnumeric('.')
тоже будет являться валидным значением
9 авг 04, 11:23    [868010]     Ответить | Цитировать Сообщить модератору
 СПАСИБО!!!  [new]
Игорь777
Guest
СПАСИБО!!!
9 авг 04, 11:26    [868023]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить