2016-09-14 260 views
0

这可能是简单的查询,但想象中那么这里问我不能得到。如果问题是错了,请原谅你T-SQL:将varchar转换为数值

enter image description here

在上面,我取日期字段转换为数字(6),但它是空的,所以将返回0。我试图用空格代替0

我试图铸造这样的(我可能是错的):

select 
    isnull(date_disqualified, cast('' as numeric)) as date_disqualified 
from tableA 

,并与该类型转换数字为varchar,或诠释的,但没有运气可言播放。

有人能帮帮我,我究竟做错了或者我怎么做工作?

这片让我很快乐:(ANSWER)

ISNULL (CAST([date_disqualified] AS VARCHAR(6)), ' ') 

谢谢大家

回答

0

如果你想有一个空格,然后整列必须是一个字符。基本上:

select (case when date_disqualified is null then '' 
      else convert(varchar(255), date_disqualified, 120) 
     end) 

我不知道为什么你想要返回值作为一个数字,如果它是一个字符串。您应该使用convert()将该值转换为所需的字符串。

+0

,因为这是通过COBOL程序做的,我必须相应地设置的话,我想你的解决方案,但没有工作,错误是像以前一样(错误的数据类型为varchar转换为数字)。因为“”的意思是字符串,我我试图放在数字字段中。 – Akka

+0

所以,你正试图在数字字段中存储'',这可能吗? – BhatiaAshish

+0

@BhatiaAshish。 。 。有点。 SQL引擎将其转换为“0”,这就是出现在输出中的原因。 –