当前位置:大问百书>百科问答>从数据类型 varchar 转换为 numeric 时出错

从数据类型 varchar 转换为 numeric 时出错

2024-10-30 00:35:11 编辑:zane 浏览量:579

从数据类型 varchar 转换为 numeric 时出错

的有关信息介绍如下:

问题补充说明:需要用sqlserver数据库:如果某种中药的库存数量为1000,当日出库数量为100,需要计算可用天数即1000/100=10,并根据这个天数正序排列,当库存数量为0或者当日出库数量为0,则在天数处... 需要用sql server 数据库:如果某种中药的库存数量为1000,当日出库数量为100,需要计算可用天数即1000/100=10,并根据这个天数正序排列,当库存数量为0或者当日出库数量为0,则在天数处显示没有库存或者当日未出库。可是当我用case判断在库存数量与当日出库数量都不为0的时候做除法运算的时候出现“从数据类型 varchar 转换为 numeric 时出错”。不知道错在哪了,求大神指教。代码如下:(注:***.num也就是kcyp.[库存数量]的数据类型是numeric(18, 5),***.cknum也就是db_data.[数量]的数据类型也是numeric(18, 5))select a.*,b.*,case when ***.num=0 then '库存为0,不能做除法' when ***.cknum IS null then '当天无取出,无法计算天数' when ***.num<>0 and ***.cknum<>0 then cast(***.num as numeric(18, 5))/cast(***.cknum as numeric(18, 5))end as tianshufrom(SELECT ypwc.[名称] as y_name,ypwc.[编号] as bianhao,ypwc.[药品类型] as ytype,ypwc.[规格] as guige,ypwc.[药品单位] as danwei,kcyp.[仓库编号] as cangku,kcyp.[库存数量] as num FROM [T库存药品] as kcyp right join [T药品卫材] as ypwc on kcyp.[药品编号]=ypwc.[编号] where kcyp.[仓库编号]='7' and ypwc.[药品类型]='中药') as aleft join (select sum(db_data.[数量]) as cknum,db_data.[编号] as bianhaob from [D调拨单] as db_dan inner join [D调拨数据] as db_data on db_dan.[单据编号]=db_data.[单据编号] where db_dan.[过单日期]>='2014-03-05 00:00:00' and db_dan.[过单日期]<='2014-03-05 23:59:59' group by db_data.[编号]) as b on ***.bi***nh***o = ***.***ianhao***order by tianshu asc 展开

一、有null值;

二、有“”值;

ISNUMERIC除罗步确定表达式是否是有效的数字类型。以下值在SQL函数ISNUMERIC()中没有找到:

1.有“-”值;

2.财务上用的远队往斯若杀井逗号,有“,”值

把以上转为0,就可以了。

其他:转小数值一般不要超过5位

从数据类型 varchar 转换为 numeric 时出错

扩展资料:

注意事项

sql的函数有个isNumeric(参数)用来转换数字,如果成功反律件英掉回1,不成功,则反回0。

例: s根题正查染elect case whenisNumeric(字段)=0the岩概n0 else 字段运算 end from表代款名  

declare迫放挥今着月发盐但依@参数varchar(32)

set@参数='abc'

select  case whenisNumeric(@参数)=0then0 else @参数 end 

set@参数='123'

select  case whenisNumeric(@参数)=0then0 else @参数 end

VARCHAR是一种比CHAR更灵活的数据类型,也用于表示字符数据,高从谓但是VARCHAR连维承绝下叫定粮可以保存可变长度的字符串。其中M表示数据类型中允许保存的字符串的最大长度,只要长度小于数据类型中可以保存的最大长度。

因此,对于难以估计确切长度的数据对象,使用VARCHAR数据类型更为明智。VARCHAR数据类型支持的最大长度也是255个字符。

版权声明:文章由 大问百书 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.dawenbaishu.com/answer/165278.html
热门文章