T-SQL :如何在空列上使用子字符串输出空格

T-SQL : How to output whitespaces with Substring on an empty column

我正在尝试将 Informix select 查询转换为 T-SQL.

在 YYYYMMDD 格式的日期列上,Informix 查询在 Select 中的 Statusdate 下方,我编写了等效的 T-SQL,它可以完美地以 YYYY-MM 格式输出 Statusdate -DD.

Informix:

Date[1,4]||"-"||Date[5,6]||"-"||Date[7,8] as StatusDate

T-SQL:

SUBSTRING(Date,1,4)+'-'+SUBSTRING(Date,5,2)+'-'+SUBSTRING(Date,7,2) AS StatusDate

但如果日期列为空,Informix 输出为 [ - - ] 即 4spaces-2spaces-2spaces 而 SQL 输出是 [--] 即没有空格。

当列为空时,如何更新 T-SQL 查询以获得类似于 Informix 的输出。

您可以在此处使用 CASE 表达式来显式处理 NULL 日期的输出:

CASE WHEN Date IS NOT NULL
     THEN LEFT(Date, 4) + '-' + SUBSTRING(Date, 5, 2) + '-' + RIGHT(Date, 2)
     ELSE '    -  -  ' END AS StatusDate