将数据类型 varchar 转换为 numeric 时出错。
将数据类型 varchar 转换为 numeric 时出错。
这种情况出现时该怎么处理啊?
------解决方案--------------------用isnumeric(字段名)判断后,再转换
------解决方案-------------------- --用isnumeric(字段名)判断后,再转换
select *,cast(字段名 as numeric(10,2))
from 表名
where isnumeric(字段名)=1
------解决方案--------------------select * from 表名
where
isnumeric(字段名)=0--查不下不正确的值
处理一下再改
------解决方案--------------------update 表名 set
balance=balance * cast(curr_code as decimal(16,2))
where isnumeric(curr_code)=1
------解决方案--------------------wqplq() ( ) 信誉:100 Blog 加为好友 2007-04-10 16:05:38 得分: 0
还是不太懂
balance=balance*curr_code
这句要怎么转化呢?
balance是decimal(16,2)
curr_code是float类型的
----------
curr_code是float类型?
try
Select
balance=balance*Cast(curr_code As Numeric(10,2))
From
TableName
Where IsNumeric(curr_code) = 1
------解决方案--------------------select balance=balance*cast(curr_code as decimal(16,2))
from det_item_bal,#all
where det_item_bal.item_code=#all.item_code and IsNumeric(curr_code) = 1
------解决方案--------------------select balance=balance*cast(curr_code as decimal(16,2))
from det_item_bal,#all
where det_item_bal.item_code=#all.item_code
And IsNumeric(curr_code) = 1 --加上IsNumeric(curr_code) = 1
------解决方案--------------------ISNUMERIC
決定運算式是否為有效的數值型別。
語法
ISNUMERIC ( expression )
------解决方案--------------------wqplq() ( ) 信誉:100 Blog 加为好友 2007-04-10 16:17:56 得分: 0
加上IsNumeric(curr_code) = 1
的作用是什么呢?
-----
就是將不是有效數值的數據剔除條,否則和balance計算的時候就會出錯。
------解决方案----------------------curr_code是哪個表的?
--使用
Select * From det_item_bal Where IsNumeric(curr_code) = 0
--或者
Select * From #all Where IsNumeric(curr_code) = 0
--將非法的數值查詢出來,手動修改掉,然後再使用
select balance=balance*cast(curr_code as decimal(16,2))
from det_item_bal,#all
where det_item_bal.item_code=#all.item_code
--查詢