9

我有这个选择语句,我在其中检查电话号码是空还是空,如果是,那么我将返回“没有可用的电话号码”。像这样

SELECT 
      Name, 
      ISNULL(NULLIF(Phone, ''), 'No Phone Number is available') AS Phone
FROM Person

但是,当电话号码为空或为空时,我没有收到完整的文本“没有可用的电话号码”。仅返回前 20 个字符。电话字段的长度也是 20。所以我认为这是根据电话字段的长度返回文本。

有没有办法在不改变字段长度的情况下纠正这个问题?

4

1 回答 1

11

你是对的。

ISNULL 使用第一个参数的数据类型和长度。COALESCE 采用“最高优先级”之一。所以:

COALESCE(NULLIF(Phone, ''), 'No Phone Number is available') AS Phone

或者

ISNULL(NULLIF(CAST(Phone as varchar(30)), ''), 'No Phone Number is available') AS Phone
于 2011-07-01T08:12:19.397 回答