2016-11-17 2 views
1

Я хочу отобразить все номера телефонов моего customer(Customertable).Как отобразить заметку, если строка не существует? SQL Server

Но если нет номера телефона, потому что клиент не оставил его, я хочу отобразить заметку «Нет номера телефона».

Я попытался с помощью команды

Select phonenumber 
From Customers 
if phonenumber is NUll RAISEERROR 'No phonenumber' -error 

Но я получаю сообщение об ошибке: (?!)

"Phonenumber" is not a valid columnname

и я предполагаю, что RAISEERROR также не правильный способ отображения заметки

Помогите

Извините за плохой английский.

+0

Возможно, название колонки отличается? –

ответ

6

Почему бы просто не использовать coalesce, чтобы вернуть первое ненулевое значение?

SELECT 
    COALESCE(phonenumber, 'no phone number') 
FROM customers 
+0

работал, спасибо – noclue123

0

Вы можете попробовать это, я не знаю, что ты имеешь в виду нет PhoneNumber, это может быть пустым или пустой символ, так что это мой догадывался:

Select case when phonenumber is null or phonenumber ="" then 
'No phonenumber' 
else phonenumber end 
FROM Customers 
+1

Сделайте это 'phonenumber = '''. Двойные кавычки предназначены для псевдонимов. –

0

Вы можете использовать ISNULL функцию

ISNULL (check_expression , replacement_value)

Вы можете найти описание на MSDN

Я надеюсь, что это поможет вам

SELECT 
    ISNULL(phonenumber, 'no phone number') 
FROM customers 
1

RAISEEROR кажется довольно жестоким.

Вы могли бы сделать что-то вроде этого:

SELECT COALESCE(MAX(phonenumber), 'No phonenumber') 
FROM Customers 
WHERE CustomerId = @CustomerId; 

Целью MAX() является возвращение одной строки для данного клиента.

Однако такая логика должна быть на прикладном уровне и, вероятно, не встроена в запрос.

Смежные вопросы