SQL Server:连接值

机械主义

我有3列SPRTELE_PHONE_AREASPRTELE_PHONE_NUMBER以及SPRTELE_PHONE_EXT-前缀,数量和分机。

我创建了一个案例,我只想显示SPRTELE_PHONE_NUMBERifSPRTELE_PHONE_AREASPRTELE_PHONE_EXTnull。否则,如果它们不为空,则输出将是带有括号和点的“(前缀)number.ext”。

这是我的代码:

SELECT
    CASE
        WHEN SPRTELE_PHONE_AREA IS NULL AND SPRTELE_PHONE_EXT IS NULL 
           THEN SPRTELE_PHONE_NUMBER
           ELSE CONCAT('(', SPRTELE_PHONE_AREA, ')', SPRTELE_PHONE_NUMBER, '.', SPRTELE_PHONE_EXT)
    END
FROM 
    vcc.sprtele;

问题是输出在每条记录上显示为第二种情况:“CONCAT...”

这里的问题在哪里?

示例:前缀 = 650,号码 = 1234567,分机 = 890

  • 如果前缀和分机为空 -> 1234567
  • 如果前缀和分机不为空 -> (650)1234567.890

如果前缀为空且 ext 不为空 -> 1234567.890,反之亦然

福帕斯

您的查询缺少 2 种情况:
如果 prefix 为 null 且 ext 不为 null以及
如果 ext 为 null 且 prefix 不为 null

SELECT
  CASE
    WHEN SPRTELE_PHONE_AREA IS NULL AND SPRTELE_PHONE_EXT IS NULL THEN SPRTELE_PHONE_NUMBER
    WHEN SPRTELE_PHONE_AREA IS NULL THEN CONCAT(SPRTELE_PHONE_NUMBER, '.', SPRTELE_PHONE_EXT)
    WHEN SPRTELE_PHONE_EXT IS NULL THEN CONCAT('(', SPRTELE_PHONE_AREA, ')', SPRTELE_PHONE_NUMBER)
    ELSE CONCAT('(', SPRTELE_PHONE_AREA, ')', SPRTELE_PHONE_NUMBER, '.', SPRTELE_PHONE_EXT)
  END
FROM vcc.sprtele;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章