SQL匹配字符串,后跟范围内的数字

时间:2018-09-19 20:43:15

标签: sql pattern-matching

我正在尝试检索所有零件编号是一个单词,后跟3到10之间的数字的条目。我希望它看起来像这样:

like 'STAIR[3-10]'

之前或之后永远不会有任何字符。但是,这什么也不返回。这是我第一次使用SQL,请原谅我的无知。

2 个答案:

答案 0 :(得分:0)

如果可以确定只有数字可以跟在前缀后面,例如

 x LIKE 'STAIR%'
 AND cast(right(x, length(x) - 5) AS integer) BETWEEN 3 AND 10

可以在许多DBMS中使用。 right(x, n)从字符串n的右边获取x个字符。 length(x)返回字符串x的长度。因此,如果减去'STAIR'的长度,则会在'STAIR'中的x之后得到字符串。 cast()将表达式的类型强制转换为整数。如果length()是您的DBMS未知函数,请尝试将其替换为len()

如果数字后面可以跟随其他字符,则至少

x LIKE 'STAIR%'
AND right(length(x) - 5) IN ('3', ..., '10')

可能会工作。

还是显而易见的

x IN ('STAIR3', ..., 'STAIR10')

答案 1 :(得分:0)

WHERE REGEXP_LIKE(COLUMN_NAME,'STAIR[3-9]|STAIR[1]{1}[0]{1}');