如何检查t-sql中的空值

时间:2015-01-13 19:42:22

标签: sql-server tsql

我想检查一个表中的值,看它是否为空。

如果是这样,我只想要输出为' 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 

1 个答案:

答案 0 :(得分:2)

错误消息的原因是您发布的行可能只是将Ryder_Price作为值,这是一种十进制类型。然后你试图将它连接成一个字符串。

实现您的既定目标:

  

我想检查表中的值以查看它是否为空。

     

如果是这样,我只想要输出为'0.000';否则,我想   必须转换为varchar字段的实际值。

试试这个:

convert(varchar(max),isnull(Ryder_Price,'0.000'))