select语句的where部分能否使用自定义的且带有外传参数的函数?

问题描述

select语句的where部分能否使用自定义的且带有外传参数的函数?

我使用java语言编写 访问远程的数据库,数据库中的字段包括 Id,Lng,Lat,Time,Data;
想实现的功能是根据外面传来的时间参数time,地理位置参数lng,lat来将数据库中的与传入时间相比在一个小时之内的、且地理位置在传入位置10001米以内的数据取出来。
sql语句我大致是这么写的
"select *
into new_table
from weather_data
where (time-Time)/(1000*60*60)=0
AND getDistance(lng,lat,Lng,Lat)<1000“ getDistance函数我知道怎么用java写
我不知道要如何在MySql中写这个getDistance函数 望告知 谢谢

解决方案

如果你的计算尺度在一个城市中,完全可以先根据当地的维度算出经度相差1度距离是多少,并且视作坐标为平面直角坐标。
那么距离就是经度差算出的东西距离的平方和维度差算出的南北距离的平方再开方。
当然,如果你是做超过一个省大小的尺度,最好还是用球面投影,根据三角函数算大圆弧长作为距离。

解决方案二:

自定义函数,对应的函数计算方式看这里
http://www.cnblogs.com/w-y-f/archive/2013/06/08/3126621.html
http://www.thinksaas.cn/group/topic/108588/

解决方案三:

把java的流程写入mysql的函数。

解决方案四:

简单的话,可以用java计算,然后把数据作为参数送到SQL语句中。

解决方案五:

楼主可以参考这个MySQL自定义函数

https://github.com/mnisjk/MySQL-distance-between-GPS-coordinates

时间: 2025-01-23 20:22:52

select语句的where部分能否使用自定义的且带有外传参数的函数?的相关文章

关于数据库select语句中top后面的数字能不能是个输入参数的问题

问题描述 关于数据库select语句中top后面的数字能不能是个输入参数??请各位帮忙下. 解决方案 解决方案二:exec('selecttop'+'参数个数'+'*fromsysobjects')解决方案三:sql2005支持如下语句declare@sintset@s=1selecttop(@s)*fromsysobjects 解决方案四:sql2000应该是selecttop10*formmydata解决方案五:2000不行.2005可以2000要想输入就得exec(字符串)

在ASP中使用SQL语句之1:SELECT 语句

select|语句|select 五花八门的SQL产品多得要命,或许你早顾不得其它甩开袖子就动手干了.但你要同时采用ASP和SQL的话就可能会头晕.MySQL.SQL Server和mSQL都是绝佳的SQL工具,可惜,在ASP的环境下你却用不着它们来创建实用的SQL语句.不过,你可以利用自己掌握的Access知识以及相应的Access技能,再加上我们的提示和技巧,相信一定能成功地在你的ASP网页中加入SQL. 在SQL的世界里,最最基础的操作就是SELECT 语句了.在数据库工具下直接采用SQL

SQLServer中SELECT语句的执行顺序

今天在写一条语句的时候,在查询分析器里边执行 要用10s,换用另外一种写法只用少于1s的时间,同事说是因为Sql句语执行顺序的原因.之前看过一点相 关的书,有一点印象,到网上找了资料,学习下. 逻辑查询处理步骤 复制代码 代码如下: (8)SELECT (9)DISTINCT (11)<TOP_specification> <select_list> (1)FROM <left_table> (3) <join_type> JOIN <right_ta

SELECT语句

select|语句 SELECT语句标准格式:SELECT    [ALL|DISTINCT]    select_list FROM table/view_list    [WHERE    search_conditions]    [GROUP    BY    group_by_list]    [HAVING    search_conditions]    [ORDER    BY    order_by_list]    

SELECT 语句的应用

从本节开始,我们将用大量的实例来讲述SELECT 语句的应用.首先从最简单也是最常用的单表查询开始.10.2.1 选择列(1) 用SELECT 子句来指定查询所需的列,多个列之间用逗号分开 (2) 可以使用符号"*"来选取表的全部列 (3) 在查询结果中添加列10.2.2 选择行(1) 使用WHERE 子句用户在查询数据库时,往往并不需要了解全部信息,而只需要其中一部分满足某些条件的信息.在这种情况下就需要在SELECT 语句中加入条件,以选择数据行,这时就用到WHERE 子句.WHE

数据查询--SELECT语句

   数据库是为更方便有效地管理信息而存在的人们,希望数据库可以随时提供所需要的数据信息.因此,对用户来说,数据查询是数据库最重要的功能.本章将讲述数据查询的实现方法. 在数据库中,数据查询是通过SELECT 语句来完成的.SELECT 语句可以从数据库中按用户要求检索数据,并将查询结果以表格的形式返回.我们在"Transact-SQL 语言"章节及前面的章节中已经初步接触到了SELECT 语句的一些用法,在本章中将分类讲述其具体用法. 本节讲述SELECT 语句完整的锓ń峁梗馐且桓

SQL循序渐进(9)SELECT语句

SELECT语句 在上面的教程中已经有用到SELECT语句.在本节教程中将详细对它进行阐述.SELECT语句是SQL的核心,在你的SQL语句中可能用的最多的就是SELECT语句了.由于大量的选项可以用于SELECT语句,所以整个教程好象就是围这SELECT语句转.当我们构造SQL查询语句(利用了SELECT语句)的时候,认识所有的可能选项和最好的或者最有效率的方法来实现是很有用的.这个教程将为你提供这些技能. SELECT语句用于查询数据库并检索匹配你指定条件的选择数据.SELECT语句有五个主

SELECT语句参数详解

SELECT Name SELECT  --  从表或视图中取出若干行. Synopsis SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ AS output_name ] [, ...] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...]

用select语句读excel表

excel|select|语句 <%'---------------------------------------------------Function GetMdbConnection( FileName ) Dim Provider, DBPath Provider = "Provider=Microsoft.Jet.OLEDB.4.0;" DBPath = "Data Source=" & Server.MapPath(FileName) S