与SQL匹配模式对于一系列字符

时间:2017-01-16 15:19:39

标签: sql sql-server sql-server-2008

有没有办法使用模式匹配与SQL LIKE,匹配可变数量的字符与上限?

例如,我有一列可以具有2-10个数字的“正确值”,任何超过10且小于2的都不正确。

3 个答案:

答案 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}%';

应该这样做(这是我的头脑,所以仔细检查!