[英]Why is my CAST returning null/nothing?
當我嘗試在此過程中將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,')'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.