Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Regexp на частоту повторений цифры  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: Regexp на частоту повторений цифры  [new]
Glory
Member

Откуда:
Сообщений: 104751
relief
Пытаюсь сделать так, но не работает шарманка

А вы читали в хелпе про маски LIKE ? Или вы предпочитаете их придумывать самостоятельно ?
10 сен 15, 11:24    [18131682]     Ответить | Цитировать Сообщить модератору
 Re: Regexp на частоту повторений цифры  [new]
relief
Member

Откуда:
Сообщений: 1197
Glory
relief
Пытаюсь сделать так, но не работает шарманка

А вы читали в хелпе про маски LIKE ? Или вы предпочитаете их придумывать самостоятельно ?


Читал, но как указать, что одна и та же цифра не должна повторяться n раз?
10 сен 15, 11:32    [18131735]     Ответить | Цитировать Сообщить модератору
 Re: Regexp на частоту повторений цифры  [new]
Glory
Member

Откуда:
Сообщений: 104751
relief
Читал, но как указать, что одна и та же цифра не должна повторяться n раз?

Как вы думаете, если в хелпе нет информации о повторениях в like, то это значит
- эта информацмя засекречена и доступна только избранным
- производитель не реализовал такой возможности
- что-то другое
10 сен 15, 11:34    [18131754]     Ответить | Цитировать Сообщить модератору
 Re: Regexp на частоту повторений цифры  [new]
iap
Member

Откуда: Москва
Сообщений: 47066
relief
IF @FormattedPhone LIKE '^[?!(\\d)\\1{4}]'
Это какой же сервер имеется в виду?
Может, вы не в тот форум зашли? 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]     Ответить | Цитировать Сообщить модератору
 Re: Regexp на частоту повторений цифры  [new]
relief
Member

Откуда:
Сообщений: 1197
iap, взял из java regexp - думал прокатит
Thanks!

iap
relief
IF @FormattedPhone LIKE '^[?!(\\d)\\1{4}]'
Это какой же сервер имеется в виду?
Может, вы не в тот форум зашли? 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, 12:00    [18131920]     Ответить | Цитировать Сообщить модератору
 Re: Regexp на частоту повторений цифры  [new]
aleks2
Guest
relief
Glory
пропущено...

А вы читали в хелпе про маски LIKE ? Или вы предпочитаете их придумывать самостоятельно ?


Читал, но как указать, что одна и та же цифра не должна повторяться n раз?


Ващето, цифирек всего то 10 шт.
Нафик регулярки нужны?
10 сен 15, 12:34    [18132152]     Ответить | Цитировать Сообщить модератору
 Re: Regexp на частоту повторений цифры  [new]
Glory
Member

Откуда:
Сообщений: 104751
relief
Есть телефонные номера вида 11111114. Это мусор. Его надо вычищать.
Правило такое, что если одна цифра повторяется 5 и более раз - это мусор

А 1212121212 - это уже не мусор ?
10 сен 15, 12:36    [18132164]     Ответить | Цитировать Сообщить модератору
 Re: Regexp на частоту повторений цифры  [new]
iap
Member

Откуда: Москва
Сообщений: 47066
Glory
relief
Есть телефонные номера вида 11111114. Это мусор. Его надо вычищать.
Правило такое, что если одна цифра повторяется 5 и более раз - это мусор

А 1212121212 - это уже не мусор ?
Это номер моего телефона!
Откуда он у вас?
10 сен 15, 12:37    [18132165]     Ответить | Цитировать Сообщить модератору
 Re: Regexp на частоту повторений цифры  [new]
982183
Member

Откуда: VL
Сообщений: 3385
Топорно можно сделать десять раз проверку на вхождение в номер строк от "00000" до "99999"
10 сен 15, 12:39    [18132180]     Ответить | Цитировать Сообщить модератору
 Re: Regexp на частоту повторений цифры  [new]
iap
Member

Откуда: Москва
Сообщений: 47066
982183
Топорно можно сделать десять раз проверку на вхождение в номер строк от "00000" до "99999"
От REPLICATE('0',5) до REPLICATE('9',5) тогда уж.
Чтобы количество цифр подряд легче менять было
10 сен 15, 12:45    [18132227]     Ответить | Цитировать Сообщить модератору
 Re: Regexp на частоту повторений цифры  [new]
Alibek B.
Member

Откуда:
Сообщений: 3878
982183
Топорно можно сделать десять раз проверку на вхождение в номер строк от "00000" до "99999"

У ТС не было слова "подряд", поэтому такое не подойдет.
Но можно сделать десять таких проверок: len(text)-len(replace(text, '1', '')) >= 5.
10 сен 15, 12:53    [18132286]     Ответить | Цитировать Сообщить модератору
 Re: Regexp на частоту повторений цифры  [new]
iap
Member

Откуда: Москва
Сообщений: 47066
Alibek B.
У ТС не было слова "подряд"
relief
повторяется 5 и более раз
Это не "подряд"?
10 сен 15, 12:55    [18132294]     Ответить | Цитировать Сообщить модератору
 Re: Regexp на частоту повторений цифры  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4823
relief
Его надо вычищать.


SSIS -> DataFlow -> C# Script -> Regex (полноценный) -> Derived Row

SSIS -> DataFlow -> LookUp Справочника Шаблонов -> Строка мусор / не мусор
10 сен 15, 13:55    [18132725]     Ответить | Цитировать Сообщить модератору
 Re: Regexp на частоту повторений цифры  [new]
Alibek B.
Member

Откуда:
Сообщений: 3878
iap
Это не "подряд"?

Я бы сказал, что нет.
"1112111" — здесь единицы не подряд, но повторяются.
10 сен 15, 15:26    [18133388]     Ответить | Цитировать Сообщить модератору
 Re: Regexp на частоту повторений цифры  [new]
iap
Member

Откуда: Москва
Сообщений: 47066
Alibek B.
iap
Это не "подряд"?

Я бы сказал, что нет.
"1112111" — здесь единицы не подряд, но повторяются.
Но не 5 раз! :))
10 сен 15, 15:27    [18133393]     Ответить | Цитировать Сообщить модератору
 Re: Regexp на частоту повторений цифры  [new]
monstrU
Member

Откуда: Москва
Сообщений: 1236
relief
iap, взял из java regexp - думал прокатит
Thanks!


ты серьезно ?
10 сен 15, 16:55    [18133927]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить