读书人

将数据类型 varchar 转换为 numeric 时

发布时间: 2012-04-04 16:38:51 作者: rapoo

将数据类型 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
--查

读书人网 >SQL Server

热点推荐