不确定几个字母开头吗,最多的个数总知道吧,只能这样了,把所有个数枚举出来
效率堪忧
select * from test1 where cname like '[a-Z]18[0-9]' or cname like '[a-Z][a-Z]18[0-9]'
你这个我用过哦,查不出来数据的
@mcluzhi: 你写的有问题,而且一个a-z只能查1位,你库里没有指定位的肯定
@多安分: 前边的字母是2-4位,中间跟18,后边的数字为2-6位
按照你的写法,我用了以下方式都查不到数据
like '[a-Z]{2,4}18%'
like '[a-Z]{2,4}[0-9]{2,6}'
@mcluzhi: {2,4} 这个写法你确定有吗???
@多安分:
那就只能用这种写法了
like '[a-Z][a-Z][a-Z]18[0-9][0-9][0-9][0-9]'
这种太尴尬了
2-4和2-6的排列组合有多少种,哈哈哈
select * from test1 where
cname like '[a-Z][a-Z]18[0-9][0-9]'
or cname like '[a-Z][a-Z]18[0-9][0-9][0-9]'
or cname like '[a-Z][a-Z]18[0-9][0-9][0-9][0-9]'
or cname like '[a-Z][a-Z]18[0-9][0-9][0-9][0-9][0-9]'
...
以此类推,我的意思是这个
@mcluzhi: 那么办法,要么你查出来 cname like '[a-Z][a-Z]18%' or cname like '[a-Z][a-Z][a-Z]18%' or cname like '[a-Z][a-Z][a-Z][a-Z]18%' or cname like '[a-Z][a-Z][a-Z][a-Z][a-Z]18%'再用程序逻辑过滤吧
((a wher x like '[a-z]%' ) a where x '%18%' ) a where x '%[0-9]'
你用的sqlserver 哪个版本? 原生支持正则了?
– 。淑女范erり 4年前@。淑女范erり: sql2012,不懂所以才问的
– mcluzhi 4年前@mcluzhi: https://www.cnblogs.com/Lulus/p/9497861.html 这个可能和你的情况一样。
– 。淑女范erり 4年前@。淑女范erり: 我只是不知道这个通配符怎么写
– mcluzhi 4年前