SSMS
 sql >> база данни >  >> Database Tools >> SSMS

SQL повтарящ се символен низ

Следното намира модели, т.е. 333... или 123... или 987...

Мислете за това като за Rummy 500... Тичания и групи от 3 или повече.

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

Сега, ако не ви интересува да идентифицирате "изпълнения" (123...)", просто премахнете следното:

    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


  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Спрете изпълнението на SQL Server, докато не е необходимо

  2. Разделяне на стойности, разделени със запетая

  3. Обекти за управление на SQL Server

  4. Не може да се свърже с Plesk v12 SQL Server отдалечено от SQL Server Management Studio

  5. Невалидно име на обект sql