文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>从数据类型 varchar 转换为 numeric 时出错 了解 nullif,isnumeric,convert 用法

从数据类型 varchar 转换为 numeric 时出错 了解 nullif,isnumeric,convert 用法

时间:2011-04-26  来源:步行者-朱化君

今天第一次写博客,也不知道从哪里开始写,反正就想写什么就写什么吧。

就是这么一张表,主要列

这三列分别是,比例系数1,比例系数2,比例系数3 ,这是已经存在的数据表,很郁闷,都是字符型,并且允许为空,

我要做的就是将其转换为decimal 类型,在客户输入数据的时候,客户还是比较自觉的,要么点一下,要么不输入

保存的时候,就有可能保存为 null 或者就是一个 ''   下面是转换的方法. ,如果是 null 和 '' 就要转换为 0

第一步: 要将保存为 '' 的转换为 null 下面以  bl 为例,bl 是比例系数

       nullif(bl,'')

  通过nullif 方法可以匹配当bl 为 '' 时 返回 null 当 bl 不为 '' 时 返回bl 值,记住 bl 是 null 的时候会报错的.

  所以在进行转换的时候要先判断 bl 是不是 null ,方法当然是 isnull(bl,0) 如果bl 是null 的话就转换为 0,

  所以应该这样写    nullif(isnull(bl,0),'')

第二步:将第一步转换的值在进行是否为 null 的转换,如果是 null 就转换为 0

  方法当然是  isnull(nullif(isnull(bl,0),''),0)

第三步:保证为 null,'' 的都可以进行varchar 到 decimal 转换了

   方法是 : convert(decimal(18,6),isnull(nullif(isnull(bl,0),''),0)) 就是将第二步得到的值转换为 decimal(18,6) 类型,18 代表长度,6代表小数长度

  到这里可不是就完善了,作为程序员,我们要不让出错下面就要用到 isnumeric

  isnumeric 是如果是可以转换为数字则值为 1,不能转换为数字 值为0

  第四步: 判断是否可以转换为数字 ,判断第二步中的值是否可以转换为数字

  isnumeric(isnull(nullif(isnull(bl,0),''),0))

第五步:整合起来

  select convert(decimal(18,6),isnull(nullif(isnull(bl,0),''),0)) from 表 where isnumeric(isnull(nullif(isnull(bl,0),''),0))=1

相关阅读 更多 +
排行榜 更多 +
翌日波奇狗的历险记手机版下载

翌日波奇狗的历险记手机版下载

休闲益智 下载
怪兽远征安卓版下载

怪兽远征安卓版下载

角色扮演 下载
谷歌卫星地图免费版下载

谷歌卫星地图免费版下载

生活实用 下载