簡體   English   中英

為什么我的CAST返回空值/空值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM