В mysql У меня есть varchar, содержащий широту и долготу, предоставляемые картами Google. Мне нужно иметь возможность запроса на основе значения ограничивающей рамки, но теперь нет необходимости в доступных функциях geo. Я пытаюсь заполнить 2 новых десятичных поля десятичными значениями, найденными в varchar. Вот запрос, который я пытаюсь использовать, но результатом являются все округленные значения в новых полях.MySql Как преобразовать varchar (широта, долгота) в десятичные поля?
Образец данных:
'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 Alternate попытка:
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
Может кто-нибудь увидеть, что я делаю неправильно? Спасибо.
Спасибо за помощь, но запуск этого последнего запроса привел ко всем значениям, имеющим .000000000000000, я думаю. вызывает проблемы. – otay
@ user1598994: Попробуйте выполнить запрос, подобный тому, который находится в верхней части моего ответа, где вы можете ввести точку. Это работает? – spencer7593
Извините spencer7593, результатом первого запроса остается куча нулей – otay