将Lat / Lng 存储到 MySQL 表中
问题的原因是根据需要将纬度和经度存储到MySQL表中时,需要确定存储的精度。根据给出的信息,纬度和经度的每个度数大约对应着一定的距离,具体数值取决于所处的位置。为了存储更精确的数值,可以使用DECIMAL数据类型,并根据需要设置合适的精度。
解决方法如下:
1. 根据需求确定所需的精度。根据给出的示例,可以使用DECIMAL(M,N)数据类型来存储纬度和经度的数值。其中,M表示总位数,N表示小数位数。
2. 根据所需的精度设置DECIMAL的精度。根据给出的示例,可以根据需要设置合适的M和N值。例如,DECIMAL(9,6)可以存储精度为约4英寸的数值,DECIMAL(8,5)可以存储精度为约3.5英尺的数值,DECIMAL(7,4)可以存储精度为约36英尺的数值。
3. 根据经度和纬度的特点,可以对其精度需求进行微调。例如,纬度的小数点前只需要2位数字,而不需要3位数字,因为纬度不涉及赤道以南的负数值。对于纬度,只需要在小数点前指定2位数字即可。
总结起来,将纬度和经度存储到MySQL表中,需要根据需求确定精度,并使用DECIMAL数据类型进行存储。根据位置不同,纬度和经度对应的每个度数所表示的距离有所不同,因此需要根据具体情况设置合适的精度值。
问题的原因是在MySQL中,decimal类型的字段的精度要求。
解决方法是根据需要的精度来选择合适的字段类型。
在MySQL中,decimal类型可以指定总的位数和小数位数。例如,decimal(10,6)表示总共10位数字,其中6位是小数位数。根据MySQL手册的说明,decimal(5,2)可以存储任何带有5个数字和2个小数位的值,范围从-999.99到999.99。在MySQL 5.0.3之前的版本中,对于正数,列实际上可以存储高达9999.99的数字,使用了用于符号的字节来扩展范围的上限。
根据上述信息,对于存储经纬度数据,可以选择合适的字段类型来满足精度要求。例如,DECIMAL(10,6)足够存储精度在1米以下的经纬度值。对于经度,DECIMAL(9,6)足够,而对于纬度,DECIMAL(8,6)足够。
需要注意的是,负号不计入精度范围内。因此,在存储经纬度数据时,需要考虑负值的情况。
所以,根据实际需求,选择合适的字段类型来存储经纬度数据是解决此问题的方法。
代码示例:
CREATE TABLE location ( id INT PRIMARY KEY AUTO_INCREMENT, lat DECIMAL(8,6), lng DECIMAL(9,6) );
在上述代码中,创建了一个名为location的表,其中包含id、lat和lng字段,分别用于存储经纬度数据。字段类型分别选择了合适的精度,以满足存储需求。