gpt4 book ai didi

Mysql "Unknown column ' slon–dlon' 在 'field list'

转载 作者:行者123 更新时间:2023-11-29 13:47:51 24 4
gpt4 key购买 nike

我将以下“havesin”算法实现为 SQL 函数。

DELIMITER //
CREATE FUNCTION `db`.`haversin` (slat FLOAT, slon FLOAT, dlat FLOAT, dlon FLOAT)
RETURNS FLOAT
BEGIN
declare alphaLon,a FLOAT;
set alphaLon=(slon–dlon);
set a=3956*2*ASIN(SQRT( POWER(SIN((slat - abs(dlat)) * pi()/180 / 2),2) + COS(slat * pi()/180 ) * COS(abs(dlat) * pi()/180) * POWER(SIN((alphaLon) * pi()/180 / 2), 2) ));
return a;
END
//delimiter;

执行上述命令时,我收到 1064 错误“//分隔符附近的语法错误”,但是,该函数确实被创建了。

最令人困惑的是,运行该函数时,结果是:

mysql> SELECT haversin(2.0,45.0,2.0,1.2);
ERROR 1054 (42S22): Unknown column 'slon–dlon' in 'field list'

这怎么可能?

最佳答案

  1. 您粘贴的代码包含对 MySQL 客户端的三个指令:

    1. 将其语句分隔符更改为 //;

    2. 向服务器发送一个CREATE FUNCTION命令;和

    3. 未知指令分隔符;

    因此前两个命令成功,第三个命令失败。要纠正第三个命令的失败,请在 delimiter 关键字和所需的新分隔符之间插入空格。

  2. 存储的程序在执行之前不会被评估:因此,在调用函数之前不会检测到运行时错误(例如“未知列”)。事实上,考虑到数据库模式在定义函数后可能会发生变化,这是完全有道理的。

    您收到此错误是因为您的减号字符实际上是 EN DASH (U+2013)。对于算术减法,替换为 HYPHEN-MINUS (U+002D)。

关于Mysql "Unknown column ' slon–dlon' 在 'field list',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17148253/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com