Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 使用ISNULL和NULLIF时sql server 2008返回值缩短_Sql Server 2008_Isnull - Fatal编程技术网

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

Sql server 2008 使用ISNULL和NULLIF时sql server 2008返回值缩短,sql-server-2008,isnull,Sql Server 2008,Isnull,我有一个select语句,检查电话号码是空的还是空的,如果是空的,我会返回“没有可用的电话号码”。像这样 SELECT Name, ISNULL(NULLIF(Phone, ''), 'No Phone Number is available') AS Phone FROM Person 但是,当电话号码为空或空时,我不会得到“没有可用电话号码”的全文。仅返回前20个字符。电话字段的长度也是20。所以我认为这是根据电话字段的长度返回的文本 有没有一种方法可以在不更改

我有一个select语句,检查电话号码是空的还是空的,如果是空的,我会返回“没有可用的电话号码”。像这样

SELECT 
      Name, 
      ISNULL(NULLIF(Phone, ''), 'No Phone Number is available') AS Phone
FROM Person
但是,当电话号码为空或空时,我不会得到“没有可用电话号码”的全文。仅返回前20个字符。电话字段的长度也是20。所以我认为这是根据电话字段的长度返回的文本

有没有一种方法可以在不更改字段长度的情况下更正此问题?

您是正确的

ISNULL使用第一个参数的数据类型和长度。合并采用“最高优先级”的方法。因此:


如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮(
{}
),以很好地格式化和语法突出显示它!
COALESCE(NULLIF(Phone, ''), 'No Phone Number is available') AS Phone
ISNULL(NULLIF(CAST(Phone as varchar(30)), ''), 'No Phone Number is available') AS Phone