sql - 将 varchar 转换为十进制的算术溢出错误
问题描述
为什么会这样:
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 数据库上。
解决方案
你确定你在第一个查询中得到了你想要的吗?
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
为十进制就可以了
在您的第二个查询中,您正在将 a 分配'-'
给 @latitude 所以转换'-'
为十进制会导致错误!
因此,在您的第二个查询中声明一个具有大小的 varchar 将起作用
Declare @longitude varchar(10) = '-92.6424';
推荐阅读
- java - 如何使用 android studio 实现一个 android 交付跟踪器
- python - 如何使用opencv-python识别图像的形状是对称的还是不对称的?
- mysql - 我们可以从数据库中删除 wp_woocommerce_sessions 吗?
- angularjs - angularjs:检测对 Web 应用程序的更改,然后重新加载它
- python - Django - 禁止直接分配到多对多集合的前端
- html - 如何避免包装内容的“盒子项目”?
- json - 如何解析具有不一致数据类型的 JSON?
- arrays - 包含多边形点的数组。我们可以遍历它的边界吗?
- r - 从 R 到 Excel 显示特殊字符(带圆圈的字母)或 unicode
- excel - VBA 中的对象分组