我的查询包含BETWEEN
运算符,但显示错误的结果
我的查询 -
SELECT * FROM register WHERE height BETWEEN '1' AND '6'
它还向高度为10,12和16的用户显示错误。这个查询有什么问题?
我有另一个查询工作正常,但不是正确的使用方式,因为它使查询冗长
SELECT * FROM register WHERE height > 1 AND height < 12
让我了解获取查询的正确方法,就好像添加了更多条件一样,查询很难理解和编码。
答案 0 :(得分:3)
假设高度是整数,那么它不应该是
SELECT * FROM register WHERE height BETWEEN 1 AND 6
您不需要单引号
答案 1 :(得分:1)
如果:
1.您不能或不想更改列类型
2.该领域的字符只是数字
您可以将查询更改为:
SELECT *
FROM register
WHERE CONVERT(height, UNSIGNED INTEGER) BETWEEN 1 AND 6
请参阅this SQL fiddle上的示例。
答案 2 :(得分:0)
检查列“高度”的数据类型,它应该是int或float或double,如果是以上,请运行以下查询
SELECT * FROM register WHERE height BETWEEN 1 AND 6
答案 3 :(得分:0)
如果高度字段不是数字,则可以在进行比较之前对其进行转换。
SELECT * FROM register WHERE CONVERT(height, unsigned) BETWEEN 1 AND 6