【问题标题】:T-SQL: convert varchar to numericT-SQL:将 varchar 转换为数字
【发布时间】:2016-09-15 13:29:51
【问题描述】:

这可能是一个简单的查询,但我无法按预期得到,所以在这里问。如有问题请见谅

在上面,我正在获取转换为数字(6)的日期字段,但它是空的,所以返回 0。我正在尝试使用空格而不是 0

我试过这样投射(我可能错了):

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

并使用这种类型的将数字转换为 varchar 或 int 但完全没有运气。

有人可以帮助我吗,我做错了什么或如何使它工作?

这件作品让我很开心:(ANSWER)

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

谢谢大家

【问题讨论】:

    标签: sql-server tsql


    【解决方案1】:

    如果你想要一个空格,那么整个列需要是一个字符。基本上:

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

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

    【讨论】:

    • 因为这是通过COBOL程序完成的,我必须相应地设置它,我尝试了你的解决方案但没有奏效,错误和以前一样(将数据类型varchar转换为数字时出错。)因为' ' 意思是我试图放在数字字段中的字符串。
    • 那么,您正在尝试将 ' ' 存储在数字字段中,这可能吗?
    • @BhatiaAshish 。 . .有点。 SQL 引擎将其转换为 0,这就是它出现在输出中的原因。
    • @Akka 。 . .该错误可能发生在您正在读取数据的应用程序中,而不是在数据库中。您不能将空白作为数字回读。
    猜你喜欢
    • 2013-07-30
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    相关资源
    最近更新 更多