【问题标题】:ISNULL with CONVERTISNULL 与 CONVERT
【发布时间】:2018-08-05 21:14:55
【问题描述】:

所以我有一个LEFT JOIN 查询,某些字段将返回NULL(类型为DateTime)如果另一个表中没有等效项。我想将 NULL 替换为 'X-text'

我尝试过使用 ISNULL,但收到错误消息

CONVERT(VARCHAR(10), ISNULL(column_name,'X-test'), 110) AS [MM-DD-YYYY]

错误是:

从字符串转换日期和/或时间时转换失败。

我试图将 ISNULL 放在 CONVERT 之外,但我开始收到有关 ISNULL 需要 2 个参数(它有)的错误。

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    您希望如何将“X-test”转换为日期时间?问题就在那里。您应该在转换为 varchar 后这样做:

    select
    ISNULL( CONVERT(VARCHAR(10), column_name, 110),'X-test') AS [MM-DD-YYYY]
    from myTable;
    

    【讨论】:

    • 根据ISNULL doc,结果类型是指定列的结果类型,这就是为什么当列值为NULL时SQL Server尝试将x-test转换为日期时间。我怀疑这是@Zkai 错过的。
    • @CetinBasoz,不,您说“您希望如何将 'X-test' 转换为日期时间”。我添加了文档参考来解释为什么 SQL 服务器会尝试将“X-test”转换为日期时间,这是 Zkai 不知道并导致问题的原因。
    • @DanGuzman,好的,我看到你喜欢使用文档中的文字 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 2017-12-04
    • 2020-06-24
    • 1970-01-01
    • 2018-10-27
    • 2017-05-11
    相关资源
    最近更新 更多