1

我有一个包含BETWEEN运算符的查询,但它显示错误的结果

我的查询-

SELECT * FROM register WHERE height BETWEEN  '1' AND  '6'

它还显示高度为 10、12 和 16 的用户是错误的。这个查询有什么问题?
我有另一个查询,它工作正常,但不是正确的使用方式,因为它使查询冗长

SELECT * FROM register WHERE height > 1 AND height < 12  

给我一个获取查询的正确方法的想法,就好像添加了更多条件一样,查询很难理解和编码。

4

4 回答 4

3

假设高度是一个整数不应该是

SELECT * FROM register WHERE height BETWEEN 1 AND 6

你不需要单引号

于 2012-08-24T12:23:26.927 回答
1

如果:
1. 您不能或不想更改列类型
2. 字段中的字符只是数字

您可以将查询更改为:

SELECT * 
FROM register 
WHERE CONVERT(height, UNSIGNED INTEGER) BETWEEN 1 AND 6

请参阅此 SQL fiddle中的示例。

于 2012-08-24T12:42:00.957 回答
0

检查列“高度”的数据类型,它应该是 int、float 或 double,如果它在上面,请运行以下查询

SELECT * FROM register WHERE height BETWEEN 1 AND 6
于 2012-08-24T12:26:58.957 回答
0

如果高度字段不是数字,您可以在进行比较之前对其进行转换。

SELECT * FROM register WHERE CONVERT(height, unsigned) BETWEEN 1 AND 6
于 2012-08-24T12:39:44.137 回答