为什么这样做:
Declare @latitude varchar = '34.343';
Declare @decLatitude Decimal(9,6);
Set @decLatitude = CAST(@latitude AS Decimal(9,6));
但这不是吗?
Declare @longitude varchar = '-92.6424';
Declare @decLongitude Decimal(9,6);
Set @decLongitude = CAST(@longitude AS Decimal(9,6));
它返回错误“将varchar转换为数值类型的算术溢出错误”。
这是在Azure SQL数据库上。
答案 0 :(得分:1)
确定要在第一个查询中得到想要的东西吗?
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';