使用 ISNULL 和 NULLIF 时,sql server 2008 返回值会缩短

发布于 2024-11-18 03:52:03 字数 309 浏览 3 评论 0原文

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

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

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

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

I have this select statement where I check whether phone number in null or empty and if they are then I would return 'No Phone Number is available'. Like this

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

But when the phone number is null or empty I am not getting the full text 'No phone number is available'. Only the first 20 characters is getting returned. The length of Phone field is also 20. So I think this is returning text depending on the length of the phone field.

Is there a way to correct this without changing the field length?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

氛圍 2024-11-25 03:52:03

你是对的。

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

You are correct.

ISNULL uses the datatype and length of the first parameter. COALESCE takes the "highest precedence" one. So:

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

Or

ISNULL(NULLIF(CAST(Phone as varchar(30)), ''), 'No Phone Number is available') AS Phone
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文