关于一个SQL语句的字符转换问题,请高手指点?
select
case
when 1=0 then convert(decimal(20,3),123.123456)
when 1=1 then '大巧若拙'
end
as kkk
消息 8114,级别 16,状态 5,第 1 行
將資料類型從 varchar 轉換到 numeric 時發生錯誤。
select
case
when 1=1 then convert(decimal(20,3),123.123456)
when 1=0 then '大巧若拙'
end
as kkk
为什么上面的报错,而下面就正确
select case
when isnumeric(Cp)=0 then Cp
when isnumeric(Cp)=1 then rtrim(convert(decimal(20,3),Cp))
end Cp
from dbo.DataWatch_MeasMuch
还帮我看看这一句有没有语法错误,执行的时候跟上面一样的报错,说类型转换有问题.
我以前做的时候就没有问题,为什么等了一段时间就会发生这一问题,现在都郁闷啦,请高手指点!!!!!!!!!!!
问题点数:50、回复次数:3Top
1 楼netcup(茶杯)回复于 2006-11-01 08:45:21 得分 0
说明你那个字段是NUMBERIC类型,1=0表示条件不成立,会执行1=1的,你要把VARCHAR转成哪个,肯定不行啊.Top
2 楼netcup(茶杯)回复于 2006-11-01 08:46:33 得分 0
第二个似乎是RTRIM的问题吧,这个是针对字符类型字段的吧,不能针对数字类型Top
3 楼coolingpipe(冷箫轻笛)回复于 2006-11-01 08:48:14 得分 0
上面的语句先判断when 1=0 then convert(decimal(20,3),123.123456)
然后把你要取得的这一列的类型就定为decimal类型
再执行下面的语句的时候就会有错误
第二条语句先执行when 1=1 then convert(decimal(20,3),123.123456)
然后因为when 1=0 then '大巧若拙'这句的条件不满足,就不需要做转化,所以出错了
最后一条语句你确定cp列是dec类型的吗?
用 select * from dbo.DataWatch_MeasMuch where isnumeric(cp) = 0
察看一下表里是否有非法数据Top




