gpt4 book ai didi

mysql - 为什么我的 CAST 返回 null/无?

转载 作者:行者123 更新时间:2023-11-29 14:50:15 24 4
gpt4 key购买 nike

当我尝试在此过程中将 FLOATS 转换为 CHARS 时,我在数据库中得到空值。位置是一个地理空间字段。我做错了什么?

CREATE DEFINER=`me`@`%` PROCEDURE `UpdateLocationByObjectId`(IN objectId INT, 
IN latitude FLOAT,
IN longitude FLOAT)
BEGIN
UPDATE Positions P
JOIN Objects O ON P.Id = O.PositionId
SET P.Location = GeomFromText('Point(' + CAST(latitude AS CHAR(10)) + ' ' + CAST(longitude AS CHAR(10)) +')')
WHERE O.ObjectId = objectId;
END

如果我用它作为测试,它工作得很好。

CREATE DEFINER=`me`@`%` PROCEDURE `UpdateLocationByObjectId`(IN objectId INT, 
IN latitude FLOAT,
IN longitude FLOAT)
BEGIN
UPDATE Positions P
JOIN Objects O ON P.Id = O.PositionId
SET P.Location = GeomFromText('Point(10 10')')
WHERE O.ObjectId = objectId;
END

最佳答案

更改此行

SET P.Location = GeomFromText('Point(' + CAST(latitude AS CHAR(10)) + ' ' 
+ CAST(longitude AS CHAR(10)) +')')

SET P.Location = GeomFromText(concat('Point(' , CAST(latitude AS CHAR(10)) , ' ' 
, CAST(longitude AS CHAR(10)) ,')'))

+ 运算符正在添加您的文本值 ('10' + '10') = 20
因此,中心部分的计算结果为 'Point(' + 20 + ')',添加无法读取为数字的文本 + 数字的计算结果为 NULL。

只有concat函数可以连接字符串。事实上,这段代码也能正常工作:

SET P.Location = GeomFromText(concat('Point(', latitude, ' ', longitude,')'))

关于mysql - 为什么我的 CAST 返回 null/无?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5904004/

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