CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

关于一个SQL语句的字符转换问题,请高手指点?

楼主tangxiaojun84()2006-11-01 08:38:01 在 MS-SQL Server / 基础类 提问

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

相关问题

关键词

得分解答快速导航

  • 帖主:tangxiaojun84

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo