2015-02-01 2 views
1

Я изучаю SQL с Oracle. У меня есть запрос, который показывает 3 столбца из таблицы под названием people: show last name, first name. Я хочу отобразить другой столбец, который указывает, что если есть номер телефона, чтобы показать его, и если он равен нулю, чтобы показать его как XXX-XXX-XXXX. Пока мой запрос показывает информацию, но не в том формате, который я хочу.Формат результата по запросу SQL

Select last_name, first_name, phone_number AS phone_Num from people 

Результаты:

LAST_NAME  FIRST_NAME  PHONE_NUM 
---------------- ---------------- ------------ 
Doe    Fred 
Hanes   Tina    123-587-9087 
Douglas   Tim 
McCarthy   Bob    212-098-9876 

Желаемая:

LAST_NAME  FIRST_NAME  PHONE_NUM HAS_PHONE_NUM 
---------------- ---------------- ------------ ------------- 
Doe    Fred       XXX-XXX-XXXX 
Hanes   Tina    123-587-9087 123-587-9087 
Douglas   Tim       XXX-XXX-XXXX 
McCarthy   Bob    212-098-9876 212-098-9876 

ответ

1

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

Попробуйте это:

Select last_name, first_name, phone_number AS phone_Num, 
coalesce(phone_number, 'XXX-XXX-XXXX') as HAS_PHONE_NUM from people 

NVL Или используйте:

Select last_name, first_name, phone_number AS phone_Num, 
nvl(phone_number, 'XXX-XXX-XXXX') as HAS_PHONE_NUM from people 

COALESCE является частью ANSI-92 стандарта и NVL является Oracle специфичны.

+0

Я не вижу каких-либо 'значения NULL' в' phone_number' колонке –

+0

Простой и прямо в точку. Благодаря! – MaryCoding

0

Использование Case Statement

SELECT last_name, 
     first_name, 
     phone_number AS phone_Num, 
     CASE 
     WHEN phone_number = '' THEN 'XXX-XXX-XXXX' --or Lenght(phone_number) = 0 
     ELSE phone_number 
     END   AS HAS_PHONE_NUM 
FROM people 
Смежные вопросы