Вы уверены, что получаете то, что хотели в первом запросе?
Declare @latitude varchar = '34.343';
Declare @decLatitude Decimal(9,6);
Set @decLatitude = CAST(@latitude AS Decimal(9,6));
Вы изучали, какое значение вы сохранили в обеих переменных?
select @latitude, @decLatitude
Если вы не укажете размер для varchar
, предполагается, что 1
Declare @latitude varchar = '34.343';
так что в основном вы назначаете 3
на @latitude
и преобразование 3
в десятичное в порядке
Во втором запросе вы присваиваете '-'
@latitude
Таким образом, преобразование '-'
в десятичное приведет к ошибке!
Таким образом, объявление varchar с размером будет работать во втором запросе
Declare @longitude varchar(10) = '-92.6424';