我对SQL查询有一个初学者的问题:如何选择满足以列函数形式给出的条件的表的行?更具体地说,我有一个字符串'topic'的表,它实际上是空的或包含一个整数字符串,我喜欢做类似的事情(以高效的方式)
SELECT * FROM table WHERE Convert(int,'topic') BETWEEN 1 AND 10;
如何做到这一点? (上面的语法似乎有误......)
答案 0 :(得分:3)
使用隐式投射
SELECT * FROM your_table WHERE topic BETWEEN 1 AND 10;
或明确
SELECT * FROM your_table WHERE cast(topic as signed) BETWEEN 1 AND 10;
答案 1 :(得分:2)
您可以使用MySQL"无声"转换设施。这会将字符串的前导数字转换为数字上下文中的数字。如果没有这样的数字,则返回0。
因此,对于您的示例,您可以这样做:
where topic + 0 between 1 and 10
如果字符串没有前导数字,则返回false。