在 mysql 中,我有一个包含谷歌地图提供的纬度和经度的 varchar。我需要能够根据边界框值进行查询,但不需要现在可用的地理特征。我正在尝试使用 varchar 中的 Decimal 值填充 2 个新的 Decimal 字段。这是我尝试使用的查询,但结果是新字段中的所有舍入值。
样本数据:
'45.390746926938185, -122.75535710155964',
'45.416444621636415, -122.63058006763458'
创建表:
CREATE TABLE IF NOT EXISTS `cameras` (
`id` int(11) NOT NULL auto_increment,
`user_id` int(75) NOT NULL,
`position` varchar(75) NOT NULL,
`latitude` decimal(17,15) default NULL,
`longitude` decimal(18,15) default NULL,
`address` varchar(75) NOT NULL,<br />
`date` varchar(11) NOT NULL,<br />
`status` int(1) NOT NULL default '1',
`duplicate_report` int(11) NOT NULL default '0',
`missing_report` int(11) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1050 ;
SQL:
UPDATE cameras
SET latitude = CAST( (substring(position,1,locate(',',position))) AS DECIMAL(17,15) ),
longitude = CAST( (substring(position,locate(',',position)+1)) AS DECIMAL(18,15) )
SQL 替代尝试:
UPDATE cameras
SET latitude = CONVERT( (substring(position,1,locate(',',position))), DECIMAL(17,15) ),
longitude = CONVERT( (substring(position,locate(', ',position)+1)), DECIMAL(18,15) )
结果字段值适用于两种情况:
45.000000000000000 and -122.000000000000000
AND
45.000000000000000 and -122.000000000000000
谁能看到我做错了什么?谢谢。