SQLServer中decimal 类型的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLServer中decimal 类型的问题相关的知识,希望对你有一定的参考价值。

如果一张表里有两个字段 id 和 num , id 是varchar ,num 是decimal
insert into table (id,num) value ('123','')
报 服务器: 消息 8114,级别 16,状态 5,行 1
将数据类型 varchar 转换为 numeric 时出错。
如果我num字段要是空值要怎么插入?
字段不确定有没有值,有时候有,有时候没有
to 数据库强者:不能写死
我前面没说清楚,我想知道是有没有在sql里可以判断一下

现在要在程序里改动太麻烦,sql相对工作量少一点

我也试了一下,空字符串''转换成decimal类型时是会出错.
所以在转换之前需要对原始数据进行判断,如果是空字符串就转为0或null.
参考代码:
declare @num decimal(8,2)
declare @tmp varchar(10)

set @tmp='234.567'

if @tmp=''
set @num=null
--或者set @num=0
else
set @num=@tmp

insert into table(id,num) values('123',@num)
参考技术A insert into table (id,num) value ('123, null) 使用这样插入数据就不会报错吧 参考技术B 发站内信给我!

我都被你搞糊涂了!本回答被提问者采纳

sql中数据类型decimal(1, 1)和numeric (1, 1)之间的差异[重复]

【中文标题】sql中数据类型decimal(1, 1)和numeric (1, 1)之间的差异[重复]【英文标题】:Diff between the datatypes decimal(1, 1) and numeric (1, 1) in sql [duplicate] 【发布时间】:2019-03-28 03:07:31 【问题描述】:

谁能通过例子解释一下SQL中数据类型decimal(1, 1)和numeric(1, 1)的区别?

【问题讨论】:

SQL Server 中,decimalnumeric 类型是等价的 - 没有区别 您使用的是哪个DBMS 产品? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加标签postgresqloracledb2sql-server、... 欢迎来到 SO。请在发布之前至少进行 1 次 Google 搜索,尤其是在数据类型定义如此具体的情况下。 同样的事情,根据 ANSI/ISO SQL 标准。 【参考方案1】:

没有区别,NUMERIC和DECIMAL是同义词:Microsoft Docs

【讨论】:

以上是关于SQLServer中decimal 类型的问题的主要内容,如果未能解决你的问题,请参考以下文章

SqlServer中decimal,float 和 real 数据类型的区别

sqlserver中的小数类型(float和decimal)

SqlServer中decimal(numeric )float 和 real 数据类型的区别[转]

sql server 2008环境中,字段为decimal(18,2),当输入为空时,会报错。

sql中数据类型decimal(1, 1)和numeric (1, 1)之间的差异[重复]

sqlserver decimal 默认值是0.0 插入null 的时候会不会报错