SQL Server – поиск шаблонов чисел

Я смотрел на это в течение последнего часа и просто не могу найти способ сделать это, я уверен, что это довольно просто, но мои навыки работы с Google и чтением меня подвели.

Все, что мне нужно сделать, это найти восходящие и нисходящие числовые шаблоны в поле.

Как в этом псевдо-SQL-коде:

select * where col = '123456' or '23456' or '7654' or '987654321' 

Большинство методов шаблонов, использующих LIKE похоже, вокруг размещения символов / чисел, а не конкретного порядка,

Я начал пытаться создать запрос, чем первый символ и сравнивает его со следующим, но это кажется действительно неэффективным и неэффективным, так как нужно, чтобы каждое поле в столбце запускало запрос и возвращало его, если оно совпадает.

Мне удалось найти способ получить его, если его повторный характер, но не если его увеличение или уменьшение.

Любая помощь будет принята с благодарностью.

Другой вариант может быть примерно таким:

 Declare @Table table (col int) Insert into @Table values (4141243),(4290577),(98765432),(78635389),(4141243),(22222),(4290046),(55555555),(4141243),(6789),(77777),(45678),(4294461),(55555),(4141243),(5555) Declare @Num table (Num int);Insert Into @Num values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9) Select Distinct A.* From @Table A Join ( Select Patt=replicate(Num,3) from @Num Union All Select Patt=right('000'+cast((Num*100+Num*10+Num)+12 as varchar(5)),3) from @Num where Num<8 Union All Select Patt=reverse(right('000'+cast((Num*100+Num*10+Num)+12 as varchar(5)),3)) from @Num where Num<8 ) B on CharIndex(Patt,cast(col as varchar(25)))>0 

Возвращает

 Col 5555 6789 22222 45678 55555 77777 55555555 98765432 

**

Думайте RUMMY 500. Группы или пробеги 3. Например, 123 или 321 или 333 будут хитом.

**

Вы можете помещать регулярное выражение в свои котировки LIKE. Восходящий:

 ^(?=\d{4,10}$)1?2?3?4?5?6?7?8?9?0?$ 

По убыванию:

 ^(?=\d{4,10}$)9?8?7?6?5?4?3?2?1?0?$ 

d {4,10} здесь возможна длина значения, от 4 до 10 символов.
Скорее всего, не скоро.

Вы можете проверить, как это работает на http://rubular.com/ .

Редактирование: Извините, я забыл упомянуть, что вам нужно сначала выполнить CLR-среду MS SQL Server. По умолчанию MSSQL Server не полностью поддерживает RegEx.

В этой статье описывается, как создавать и использовать расширения для предложения LIKE (Transact-SQL), которое поддерживает регулярные выражения.

http://www.codeproject.com/Articles/42764/Regular-Expressions-in-MS-SQL-Server

Interesting Posts

Преобразование ЧЧ: ММ: СС

Какие «специальные» символы разрешены в полях varchar SQL Server?

SQL – справочная таблица содержит информацию, основанную на дате

Могу ли я подключиться к файлу LocalDB MDF на компьютере из веб-приложения, которое выполняется на веб-сервере?

Удаление части предложения where в зависимости от ввода

Как ранжировать столбцы таблицы на основе дубликатов?

Как перевернуть бит с помощью побитового оператора для int в TSQL?

SQL Получение последнего комментария в журнале

Мне нужно несколько вычислений в одном выражении

Отображение многозначных параметров

SqlServer2008 – Могу ли я изменить скалярную функцию, пока она упоминается во многих местах

Как вызвать хранимую процедуру из другой хранимой процедуры в SQL Server?

Среднее значение рекурсивного распада на сервере Sql 2012

SQL – Разность значений между определенными строками

Разделить строки с одинаковым идентификатором на столбцы

Давайте будем гением компьютера.