我想检查一个表中的值,看它是否为空。
如果是这样,我只想要输出为' 0.000&#39 ;;否则,我喜欢必须转换为varchar字段的实际值。
数据库中列的定义是十进制(10,3)。
当我运行我的下面的查询(查询的相关部分)时,我收到一条错误消息:
Error converting data type varchar to numeric.
这是我收到错误的t-sql语法。我该如何纠正?
isnull(nullif(Ryder_Price,'0.000'),convert(varchar(max),Ryder_Price))
这是完整的SELECT语句:
Select '4'+','
+','+Case when Country_Code= 1 then 'USA' else 'CAN' End
+','+
+','+isnull(nullif(Ryder_Price,'0.000'),convert(varchar(max),Ryder_Price))
+','+isnull(nullif(Ryder_Price,'0.000'),convert(varchar(max),Ryder_Price))
+','+isnull(nullif(Ryder_Price,'0.000'),convert(varchar(max),Ryder_Price))
+','+
+','+'01/01/1900'
+','+'01/01/2099'PartMaster_String
,4 ord,part_no
, RIGHT('000'+convert(varchar(3),ATA_SYSCode),3)+'-'+RIGHT('000'+convert(varchar(3),ATA_Asmcode),3)+'-'+RIGHT('000'+convert(varchar(3),ATA_Partcode),3) taskstring
From tbl_CPM_PARTS_MASTER_PTC
答案 0 :(得分:2)
错误消息的原因是您发布的行可能只是将Ryder_Price作为值,这是一种十进制类型。然后你试图将它连接成一个字符串。
实现您的既定目标:
我想检查表中的值以查看它是否为空。
如果是这样,我只想要输出为'0.000';否则,我想 必须转换为varchar字段的实际值。
试试这个:
convert(varchar(max),isnull(Ryder_Price,'0.000'))