我有以下数据:
[sequences]
/a1
/a2
/a3
...
/a10
查询SELECT * FROM sequences WHERE nbr <= '/a10'
应返回上面的列表,而不是返回:
[results]
/a1
/a10
如何让它返回上面列表中的所有行?
答案 0 :(得分:7)
它可以正常工作。要比较数值,您必须以某种方式将这些转换为数字。一个好的开始是使用substr(yourfieldname, 3) to cut of the
/ a . Then you can use
convert`将其强制转换为int,因此您的最终查询将类似于:
select * from sequences where convert(int, substr(nbr, 3)) <= 10
请注意,将字符串转换为int的确切函数和规则可能非常符合dbms。这说明了一般的想法。
答案 1 :(得分:2)
SELECT *
FROM sequences
WHERE toInt(substring (nbr, 2)) <= 10;
'substring'-function和'toInt'的名称和语法将从db-implementation到db-implementation不等。