下面的答案是计数我对你的要求的解释,你的问题有点不清楚。
SELECT
ID,
EMPLOYEE,
[ROLE],
WorkType1,
CASE WHEN Date1 IS NULL THEN WorkType1 ELSE CAST(Date1 AS VARCHAR(23)) END Date1,
WorkType2,
CASE WHEN Date2 IS NULL THEN WorkType2 ELSE CAST(Date2 AS VARCHAR(23)) END Date2,
WorkType3,
CASE WHEN Date3 IS NULL THEN WorkType3 ELSE CAST(Date3 AS VARCHAR(23)) END Date3
WorkType4,
CASE WHEN Date4 IS NULL THEN WorkType4 ELSE CAST(Date4 AS VARCHAR(23)) END Date4
日期的显式转换为VARCHAR(23)当你用日期值这是不兼容的数据类型我选择VARCHAR(23)混合Worktype允许日期时间
根据需要在您的数据库设置中,您可能需要额外拆分日期以在输出中保留您期望的格式,下面给出了yyyy-MM-dd HH:mm:ss。
CAST(Datepart(Year,Date1) AS VARCHAR(4)) + '-'+ RIGHT('00'+CAST(Datepart(Month,Date1) AS VARCHAR(2)),2) + '-' + RIGHT('00' + CAST(Datepart(Day,Date1) AS VARCHAR(2)),2) + ' ' + RIGHT('00' + CAST(Datepart(HH,Date1) AS VARCHAR(2)),2)+ ':' + RIGHT('00'+CAST(Datepart(MINUTE,Date1) AS VARCHAR(2)),2) + ':' + RIGHT('00'+CAST(Datepart(ss,Date) AS VARCHAR(2)),2)
我用下面的测试
DECLARE @Date1 DATEtime = '2017-01-01', @Date2 DATEtime = NULL, @Date3 Datetime = '2017-01-02'
,@Worktype1 Varchar(20) = 'Test1'
,@Worktype2 Varchar(20) = 'Test2'
,@Worktype3 Varchar(20) = 'Test3'
SELECT
CASE WHEN @Date1 IS NULL THEN @WorkType1 ELSE CAST(@Date1 AS VARCHAR(25)) END Date1, /*Varchar 23 date*/
CASE WHEN @Date2 IS NULL THEN @WorkType2 ELSE CAST(@Date2 AS VARCHAR(25)) END Date2, /* Result of Worktype2 due to null */
CASE WHEN @Date3 IS NULL THEN @WorkType3 ELSE CAST(Datepart(Year,@Date3) AS VARCHAR(4)) + '-'+ RIGHT('00'+CAST(Datepart(Month,@Date3) AS VARCHAR(2)),2) + '-' + RIGHT('00' + CAST(Datepart(Day,@Date3) AS VARCHAR(2)),2) + ' ' + RIGHT('00' + CAST(Datepart(HH,@Date3) AS VARCHAR(2)),2)+ ':' + RIGHT('00'+CAST(Datepart(MINUTE,@Date3) AS VARCHAR(2)),2) + ':' + RIGHT('00'+CAST(Datepart(ss,@Date3) AS VARCHAR(2)),2) END Date3 /* Result for Date 3 formatted to yyyy-MM-dd HH:mm:ss*/
其提供了以下的结果集
[结果集] [1]:https://i.stack.imgur.com/Y1uUp.jpg
它返回空值或空白? – McNets
只需使用'IS NULL'或'IS NOT NULL'。如果一个字段包含一个空字符串,它*会*有一个值。如果你想检查空或空字符串,使用'myField为空或myfield =''' –
'null'在SQL中意味着'未知'。你可以给空或空白不管这意味着你要 –