有下表
name | latitude | longitude
---------------------------
A | 20.123 | 114.8965
B | 1.987 | -0.39123
对于给定的输入(myinput
),例如20.1
我想知道它是否已存在于表中。
这意味着我需要采取latitude
(或longitude
,但我们只关注latitude
,以便简化问题)表的每一行,得到第一个小数,并将其四舍五入为上限值,并与input
进行比较。
这样的东西,当然不起作用:
SELECT *
FROM mytable
WHERE substring(ROUND(latitude, 1), 1, 3) = myinput
/\ /\
the problem with this values are that the length is variable (20.123, 114, 8965, -0.39, etc.)
我在这里做的是:
20.123
20.123
20.1
20.1 = 20.1
进行比较。 OK!任何想法我怎样才能达到我的目标?也许不使用SUBSTRING
并使用正则表达式来获取 the-number-after-the-dot ?我不在乎是否必须使用任何其他功能。
提前致谢。
答案 0 :(得分:2)
只需将具有一位小数精度的输入与四舍五入位置的纬度列进行比较:
SELECT *
FROM mytable
WHERE ROUND(latitude, 1) = myinput
答案 1 :(得分:0)
如果未修复输入小数精度,则like
可以执行此操作:
select *
from youtable
where latitude like concat(myinput, '%')
这是SQLFiddle中的demo。