字符串大于或小于

时间:2011-05-28 21:39:01

标签: sql

我有以下数据:

[sequences]
/a1
/a2
/a3
...
/a10

查询SELECT * FROM sequences WHERE nbr <= '/a10'应返回上面的列表,而不是返回:

[results]
/a1
/a10

如何让它返回上面列表中的所有行?

2 个答案:

答案 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不等。