【问题标题】:Returning Null Value instead of 'NOT UPDATED'返回空值而不是“未更新”
【发布时间】:2016-09-12 06:16:32
【问题描述】:
SELECT  top 1 'Uploaded_Date' =   
 CASE isnull(Uploaded_Date,'')  
 WHEN Uploaded_Date THEN 'NOT UPDATED' 
else uploaded_date 
  END     
FROM ABC

SELECT  top 1 'Uploaded_Date' =   
 CASE isnull(Uploaded_Date,0)  
 WHEN 0 THEN 'NOT UPDATED' 
else uploaded_date 
  END     
FROM ABC

当 Uploaded_date 列为 null 或为空时,它应该返回 NOT UPDATED 而是返回 NULL..!

提前致谢

【问题讨论】:

  • select ISNULL(Uploaded_Date, 'NOT UPDATED')
  • SELECT TOP 1 'Uploaded Date' = CASE WHEN Uploaded_date IS NULL THEN 'No Updated' ELSE Uploaded_date
  • 返回的是真正的 null 还是字符串 null?
  • 嗨 Sushil,感谢您的回复,但在使用您的查询时,我仍然得到空值而不是“未更新”
  • 我正在使用 MS SQL 2008 @a_horse_with_no_name

标签: sql sql-server sql-server-2008 tsql


【解决方案1】:

试试下面的查询。

   SELECT  top 1 
   CASE WHEN (Uploaded_Date IS NULL or LTRIM (RTRIM (isnull(Uploaded_Date,'')))='NULL')
        THEN CAST('NOT UPDATED' AS VARCHAR(50))
        ELSE CAST(uploaded_date AS VARCHAR(50)) END  as  'Uploaded_Date'
     FROM ABC

【讨论】:

  • 嗨 Unnikrishanan,感谢您的回复,上述查询也返回空列..!
  • uploaded_date 列的数据类型是什么?
  • 我使用的数据类型是varchar(50)
  • 好的..所以你的列中有可能出现空字符串..尝试使用更新的脚本。
  • 对不起,我又遇到了同样的错误
【解决方案2】:

您正在尝试将int 值设置为Uploaded_Date,这是一个varchar(50)。而不是存储int 0 存储'0' 即varchar 并在case 语句中进行比较。它应该工作。

   SELECT  top 1 'Uploaded_Date' =   
     CASE isnull(Uploaded_Date,'0')  
     WHEN '0' THEN 'NOT UPDATED' 
    else uploaded_date 
      END     
    FROM ABC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-05
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多