ISNULL 不替换为 NULL

ISNULL not replacing with NULL

我有以下代码 -

   SELECT
       BR_CSNO AS [PARTY_KEY],
       'W' AS [PHONE_TYPE_CD],
       ISNULL( LTRIM( RTRIM( FAC_TELNO ) ), '0' ) AS [PHONE_NUM],
       NULL AS [UPDATE_DT],
       GETDATE() [BATCH_DT]
   FROM
       BASE B

我得到以下结果 -

它没有取代 NULL。为什么?是因为放置错误还是使用了 LTRIM(RTRIM()) ?

编辑

抱歉,我对 SQL 的了解有限。我想 trim FAC_TELNO 并用 NULL 替换它,如果它是 0

我想这就是我想要的。抱歉造成混乱!

SELECT
       BR_CSNO AS [PARTY_KEY],
       'W' AS [PHONE_TYPE_CD],
       NULLIF( LTRIM( RTRIM( FAC_TELNO ) ), '0' ) AS [PHONE_NUM],
       NULL AS [UPDATE_DT],
       GETDATE() [BATCH_DT]
   FROM
       BASE B

为什么使用 LTRIm 和 RTRIM 使用 TRIM 它对我有用

SELECT
       BR_CSNO AS [PARTY_KEY],
       'W' AS [PHONE_TYPE_CD],
       ISNULL( Trim( FAC_TELNO ), '0' ) AS [PHONE_NUM],
       '' AS [UPDATE_DT],
       GETDATE() [BATCH_DT]
   FROM
       BASE B

SQL 有两个与 null 相关的函数。

  1. IsNull,它有两个参数,一个可能为 null 的值和,以及一个替换值(如果原始值为 null)。 IsNull(null, 0) = 0
  2. NullIf,它接受两个参数并比较它们。如果比较 returns 为真,则返回 null,如果比较为假或空,则返回第一个值。 NullIf(null, 0) 为空,NullIf(0,0) 为空,NullIf(1, null) = 1.

您似乎想使用 NullIf(ltrim(rtrim(fac_telno)), 0) Phone_Num