- · Converts nulls to an actual value-NVL
- · Returns the first non-null expression in the list-COALESCE
- · Examines the first expression; if the first expression is not null, it returns the second expression; if the first expression is null, it re-turns the third expression-NVL2
- · Compares two expressions; if they are equal, the function returns null; if they are not equal, the function returns the first expression-NULLIF
Use aliases to make the output more readable.
1. Create a report that shows the Global Fast Foods promotional name, start date, and end date from the f_promotional_menus table. If there is an end date, temporarily replace it with “end in two weeks.” If there is no end date, replace it with today’s date.
SELECT name, start_date, end_date, NVL2(end_date, 'end in two weeks', TO_CHAR( SYSDATE, 'DD-Mon-YYYY')) as nvl2
2. Not all Global Fast Foods staff members receive overtime pay. Instead of displaying a null value for these employees, replace null with zero. Include the employee’s last name and overtime rate in the output. Label the overtime rate as “Overtime Status”.
SELECT last_name, NVL(overtime_rate,0) as "Overtime Status"
3. The manager of Global Fast Foods has decided to give all staff who currently do not earn overtime an overtime rate of $5.00. Construct a query that displays the last names and the overtime rate for each staff member, substituting $5.00 for each null overtime value.
SELECT last_name, TO_CHAR( NVL(overtime_rate,5), '$999.99') as "Overtime Status"
4. Not all Global Fast Foods staff members have a manager. Create a query that displays the employee last name and 9999 in the manager ID column for these employees.
SELECT last_name, NVL(manager_id,9999) as manager_id
5. Which statement(s) below will return null if the value of v_sal is 50?
a. SELECT nvl(v_sal, 50) FROM emp;
b. SELECT nvl2(v_sal, 50) FROM emp;
c. SELECT nullif(v_sal, 50) FROM emp;
d. SELECT coalesce (v_sal, Null, 50) FROM emp;
6. What does this query on the Global Fast Foods table return?
SELECT COALESCE(last_name, to_char(manager_id)) as NAME
Since last_name is not nullable, it will always return last_name. If last_name would have been nullable and there had been a null last_name field, it would have fall back to manager_id converted to varchar2.
a. Create a report listing the first and last names and month of hire for all employees in the EMPLOYEES table (use TO_CHAR to convert hire_date to display the month).
SELECT NVL(first_name,'FNU') , last_name, TO_CHAR(hire_date, 'Month') as "month of hire"
First name is nullable, so print first name unknown(FNU in short)
b. Modify the report to display null if the month of hire is September. Use the NULLIF function.
SELECT NVL(first_name,'FNU') , last_name, NULLIF( TO_CHAR(hire_date, 'Month'), 'September') as "month of hire"
8. For all null values in the specialty column in the DJs on Demand d_partners table, substitute “No Specialty.” Show the first name and specialty.
SELECT first_name, NVL(specialty, 'No Specialty') as specialty