Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
relief Member Откуда: Сообщений: 1197 |
Есть телефонные номера вида 11111114. Это мусор. Его надо вычищать. Правило такое, что если одна цифра повторяется 5 и более раз - это мусор Пытаюсь сделать так, но не работает шарманка DECLARE @FormattedPhone BIGINT SET @FormattedPhone = 31111115 IF @FormattedPhone LIKE '^[?!(\\d)\\1{4}]' BEGIN PRINT 1 END ELSE BEGIN PRINT 2 END |
10 сен 15, 11:21 [18131666] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
А вы читали в хелпе про маски LIKE ? Или вы предпочитаете их придумывать самостоятельно ? |
||
10 сен 15, 11:24 [18131682] Ответить | Цитировать Сообщить модератору |
relief Member Откуда: Сообщений: 1197 |
Читал, но как указать, что одна и та же цифра не должна повторяться n раз? |
||||
10 сен 15, 11:32 [18131735] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Как вы думаете, если в хелпе нет информации о повторениях в like, то это значит - эта информацмя засекречена и доступна только избранным - производитель не реализовал такой возможности - что-то другое |
||
10 сен 15, 11:34 [18131754] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47066 |
Может, вы не в тот форум зашли? LIKE странный какой-то. DECLARE @FormattedPhone BIGINT=3111115; SELECT ISNULL( ( SELECT 1 WHERE NOT EXISTS ( SELECT N,C FROM ( SELECT N=ROW_NUMBER()OVER(ORDER BY v.number)-ROW_NUMBER()OVER(PARTITION BY SUBSTRING(CAST(@FormattedPhone AS VARCHAR),v.number,1) ORDER BY v.number) ,C=SUBSTRING(CAST(@FormattedPhone AS VARCHAR),v.number,1) FROM master.dbo.spt_values v WHERE v.type='P' AND v.number BETWEEN 1 AND LEN(CAST(@FormattedPhone AS VARCHAR)) ) T GROUP BY N,C HAVING COUNT(*)>=5 ) ),0); |
||
10 сен 15, 11:39 [18131781] Ответить | Цитировать Сообщить модератору |
relief Member Откуда: Сообщений: 1197 |
iap, взял из java regexp - думал прокатит Thanks!
|
||||
10 сен 15, 12:00 [18131920] Ответить | Цитировать Сообщить модератору |
aleks2
Guest |
Ващето, цифирек всего то 10 шт. Нафик регулярки нужны? |
||||
10 сен 15, 12:34 [18132152] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
А 1212121212 - это уже не мусор ? |
||
10 сен 15, 12:36 [18132164] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47066 |
Откуда он у вас? ![]() |
||||
10 сен 15, 12:37 [18132165] Ответить | Цитировать Сообщить модератору |
982183 Member Откуда: VL Сообщений: 3385 |
Топорно можно сделать десять раз проверку на вхождение в номер строк от "00000" до "99999" |
10 сен 15, 12:39 [18132180] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47066 |
Чтобы количество цифр подряд легче менять было ![]() |
||
10 сен 15, 12:45 [18132227] Ответить | Цитировать Сообщить модератору |
Alibek B. Member Откуда: Сообщений: 3878 |
У ТС не было слова "подряд", поэтому такое не подойдет. Но можно сделать десять таких проверок: len(text)-len(replace(text, '1', '')) >= 5. |
||
10 сен 15, 12:53 [18132286] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47066 |
|
||||
10 сен 15, 12:55 [18132294] Ответить | Цитировать Сообщить модератору |
a_voronin Member Откуда: Москва Сообщений: 4823 |
SSIS -> DataFlow -> C# Script -> Regex (полноценный) -> Derived Row SSIS -> DataFlow -> LookUp Справочника Шаблонов -> Строка мусор / не мусор |
||
10 сен 15, 13:55 [18132725] Ответить | Цитировать Сообщить модератору |
Alibek B. Member Откуда: Сообщений: 3878 |
Я бы сказал, что нет. "1112111" — здесь единицы не подряд, но повторяются. |
||
10 сен 15, 15:26 [18133388] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47066 |
|
||||
10 сен 15, 15:27 [18133393] Ответить | Цитировать Сообщить модератору |
monstrU Member Откуда: Москва Сообщений: 1236 |
ты серьезно ? |
||
10 сен 15, 16:55 [18133927] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |