【发布时间】:2018-08-30 14:15:01
【问题描述】:
考虑将结果值存储在单列字段中的表,其中三个记录的数据类型定义为如下所示的 Varchar
- 12.2958104,12.0769
- 12.9715987,12.1053
- 12.5358104,12.07
参考上表的三条记录。我们需要比较一定范围内的纬度值
SELECT * FROM `table_name` WHERE lat >= 12.07 and lat <= 12.53
实际输出:
- 12.2958104,12.0769
预期输出:
- 12.2958104,12.0769
- 12.5358104,12.07
逗号分隔后不考虑后续值
即,为了执行任何其他操作。它只接受逗号前面的值,但不接受后面的值。为什么不与第二条记录字段中的值 12.07 进行比较?
自 12.1053 起大于 12.07。
应该如何比较用逗号分隔的值?
一般来说,我们如何比较用逗号分隔的值
例如:
- 1.5,2.0,2.5,3.0
- 3.5,4.0,4.5,5.0
- 6.0,6.5.0,7.0,7.5
- 8.0,8.5,9.0
对于值 =5.0
应选择预期结果为
- 3.5,4.0,4.5,5.0
- 6.0,6.5.0,7.0,7.5
但实际出现的结果是:
- 6.0,6.5.0,7.0,7.5
【问题讨论】:
-
我认为您在查询中打错字了,似乎您的意思是第二个 lat 应该很长
-
@RickRongen 不。我只考虑用逗号分隔的纬度值。但我的经度值与不同的值分开
-
如果您的值存储为字符串/varchars,请查看 Gordon 的答案。否则我不明白你的数据结构,你能指定
table_name中的列及其各自的数据类型吗?