有没有办法使用模式匹配与SQL LIKE,匹配可变数量的字符与上限?
例如,我有一列可以具有2-10个数字的“正确值”,任何超过10且小于2的都不正确。
答案 0 :(得分:3)
如果你真的想使用like
,你可以这样做:
where col like '__' or col_like '___' or . . .
或:
where col like '__%' and -- at least two characters
col not like '_________%' -- not 9 characters
更典型的方法是:
where len(col) between 2 and 10
如果你想确保它们是数字:
where len(col) between 2 and 10 and
col not like '%[^0-9]%'
答案 1 :(得分:-1)
你可以通过以下方式完成检查每个角色的方法:
DECLARE @TempField varchar(max)= '1v3Abc567'
DECLARE @FieldLength int = LEN(@TempField)
DECLARE @CountNumeric int = 0
WHILE @FieldLength > 0
BEGIN
SELECT @CountNumeric = @CountNumeric + ISNUMERIC( SUBSTRING (@TempField,@FieldLength,1))
SET @FieldLength = @FieldLength - 1
END
SELECT @CountNumeric NumericCount
答案 2 :(得分:-2)
您可以使用Regex。
SELECT * FROM mytable WHERE mycol LIKE '%[0-9]{2,10}%';
应该这样做(这是我的头脑,所以仔细检查!