最近开发C#程序时碰到了这样一个问题:从一个数据库中查询出数据,往另一个数据库中插入。

在查询库中一些字段是varchar2类型,而插入库中对应的字段却是number类型,于是在查询语句中的这些字段就写成NVL(COLUMN_NAME,0)。在正式插入时对这... 在查询库中一些字段是varchar2类型,而插入库中对应的字段却是number类型,于是在查询语句中的这些字段就写成NVL(COLUMN_NAME,0)。在正式插入时对这些字段进行转换Convert.ToDouble(COLUMN_NAME)或Convert.ToInt32(COLUMN_NAME)。问题就出现了:如果在查询时不对这些字段进行NVL(COLUMN_NAME,0)处理,在进行类型转换时就有可能出错,即当COLUMN_NAME为NULL时,用Convert.ToDouble或Convert.ToInt32进行转换就出现问题,但我一用NVL(COLUMN_NAME,0)进行处理,插入库中的数据就被污染了,即本来是没有数据的字段(为NULL)在插入库中却为0了,我希望的效果是原来为NULL的字段,往插入库中插入时还是NULL。望高手指导。 展开
 我来答
iexapl
2011-12-10 · TA获得超过266个赞
知道小有建树答主
回答量:521
采纳率:0%
帮助的人:280万
展开全部
你可以用Double.TryParse(string s,out double result)和int.TryParse(string s,out double result)进行转换
追问
使用Double.TryParse(string s,out double result)和int.TryParse(string s,out double result)后确实可以在查询语句中的省去了NVL(COLUMN_NAME,0)的处理。但在插入时依然没有解决原来为NULL的字段,往插入库中插入时还是NULL的问题
追答
你表中那个字段允不允许为NULL,如果允许。你C#变量声明时,类型可以写成 double? 或 int? 。请注意类型后要多一个? 。
lishijun1234
2011-12-10 · TA获得超过195个赞
知道小有建树答主
回答量:159
采纳率:0%
帮助的人:84.1万
展开全部
楼上正解,不过 我认为写入的目标库既然是number形式的,0和null其实也没什么区别
追问
这得看项目情况,有些项目0和null的区别大了,比如工资涨幅、血压、孩子个数,有些人觉得没必要透露给你,所以在查询库中对应的字段什么都没有(为NULL),但在插入库中却为0,这就是差别。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式