我正在尝试检索所有零件编号是一个单词,后跟3到10之间的数字的条目。我希望它看起来像这样:
like 'STAIR[3-10]'
之前或之后永远不会有任何字符。但是,这什么也不返回。这是我第一次使用SQL,请原谅我的无知。
答案 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}');