本文介绍了SQL重复字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果字段在单元格中有重复值,是否可以评估该字段。例如,如果有人按住数字键,它返回‘00000’、‘222222222’、‘333’或诸如此类的某种变体,则该值在此字段中只能是数字。我正在寻找一种方法来查询一个字段,在那里可能会出现这样的模式。
推荐答案
以下查找模式,即333.或者123.或987.
把它想象成拉米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
现在,如果您不想标识"run"(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
这篇关于SQL重复字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!