我有3列SPRTELE_PHONE_AREA
,SPRTELE_PHONE_NUMBER
以及SPRTELE_PHONE_EXT
-前缀,数量和分机。
我创建了一个案例,我只想显示SPRTELE_PHONE_NUMBER
ifSPRTELE_PHONE_AREA
和SPRTELE_PHONE_EXT
null。否则,如果它们不为空,则输出将是带有括号和点的“(前缀)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
如果前缀为空且 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] 删除。
我来说两句