我试图在MySQL中生成一些虚拟记录,并且需要在给定范围内创建随机纬度和经度浮点值。
例如,我需要生成介于52.077090052913654和52.477040512464626之间的纬度和介于-1.8840792500000134和-0.9172823750000134之间的经度
我熟悉使用Rand Floor创建随机数范围,但这只会产生整数,我怎么可能这样做?
您可以使用RAND()两个值之间的随机值,如下所示:
randVal = (RAND() * (maxVal - minVal)) + minVal
生成随机经纬度:
SELECT
(RAND() * (52.477040512464626 - 52.077090052913654)) + 52.077090052913654 AS randlatitude,
(RAND() * (-0.9172823750000134 - -1.8840792500000134)) + -1.8840792500000134 AS randlongitude
拼接在一起:
SELECT concat(((RAND() * (-0.9172823750000134 - -1.8840792500000134)) + -1.8840792500000134),",",((RAND() * (52.477040512464626 - 52.077090052913654)) + 52.077090052913654)) AS LngLat
更新业务字段实例:
UPDATE iot_device set lat_lng_baidu= (SELECT concat(((RAND() * (119.205056 - 2.105056)) + -2.105056),",",((RAND() * (52.477040512464626 - 10.659333)) + 10.659333)))