2011-07-01 28 views
8

我有這個select語句,我檢查電話號碼是否爲null或空,如果是的話我會返回'​​沒有電話號碼可用'。像這樣當使用ISNULL和NULLIF時,sql server 2008的返回值變短了

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

但是當電話號碼爲空或空的,我沒有得到全文「無電話號碼可用」。只有前20個字符被返回。 Phone字段的長度也是20.所以我認爲這是根據電話字段的長度而返回的文本。

有沒有辦法糾正這一點,而不改變字段長度?

+0

如果您發佈的代碼,XML或數據樣本,** **請在高亮文本編輯器的線,然後單擊「代碼示例」按鈕('{ }')在編輯器工具欄上進行恰當的格式化和語法突出顯示! –

回答

9

你是對的。

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 
相關問題