首页 > 解决方案 > 检查列 IS NULL 在案例表达式中不起作用

问题描述

在此处输入图像描述

我正在尝试检查属于 View "IS NULL" 的列,它适用于 select 语句:

SELECT TOP (1000) [Invoice_Number]
  ,[Invoice_Date]
  ,[Invoice_Amount]
  ,[Invoice_CoCd]
  ,[Invoice_vendor]
  ,[Invoice_PBK]
  ,[Invoice_DType]
  ,[Invoice_DueDate]
  ,[Invoice_ClgDate] FROM [dbo].[viewABC] where   Invoice_PBK IS NULL

现在我有一个更新语句,我需要根据 VIEW 中的 NULL 更新表中的列:

UPDATE cis
    SET
    cis.InvoiceStatus = 
    (
    CASE 

    WHEN RTRIM(LTRIM(imd.[Invoice_PBK])) IS NULL THEN 
    'HELLO'  
    WHEN RTRIM(LTRIM(imd.Invoice_DType)) = 'RD' 
    THEN        '233'  END)
FROM 
    [dbo.[tblABC] cis,
    [dbo].[viewABC] imd 
WHERE [condition logic]

这些与 where 条件无关,IS NULLCASE表达式中导致问题。

有人可以帮忙吗?

标签: sqlsql-serversql-updatecasesql-view

解决方案


您可能只想逐个测试您的逻辑。尝试

SELECT ISNULL(RTRIM(LTRIM(imd.[Invoice_PBK])),'Hey Im Null')
FROM 
    [dbo].[tblABC] cis,
    [dbo].[viewABC] imd 
WHERE [condition logic]

查看您是否从查询返回的列上获得了该字符串值。然后,从那里构建。它可能像JOIN一样简单。我不喜欢那种旧语法,但是除了[conditions]. 很难为你猜出答案。你没有详细的证据可以帮助我们。这很可能是您的条件,但是您说的是“条件逻辑”,这对该线程上的组​​没有任何作用。


推荐阅读