Examine the structure and data in the PRICE_LIST table:
Name . Null . Type
-———————
PROD_ID . NOT NULL . NUMBER(3)
PROD_PRICE . VARCHAR2(10)
PROD_ID PROD_PRICE
-———————
100 $234.55
101 $6, 509.75
102 $1, 234
You plan to give a discount of 25% on the product price and need to display the discount amount in the same format as the PROD_PRICE.
Which SQL statement would give the required result?
A. SELECT TO_CHAR(prod_price* .25, ‘$99, 999.99’)
FROM PRICE_LIST;
B. SELECT TO_CHAR(TO_NUMBER(prod_price)* .25, ‘$99, 999.00’)
FROM PRICE_LIST;
C. SELECT TO_CHAR(TO_NUMBER(prod_price, ‘$99, 999.99’)* .25, ‘$99, 999.00’) FROM PRICE_LIST;
D. SELECT TO_NUMBER(TO_NUMBER(prod_price, ‘$99, 999.99’)* .25, ‘$99, 999.00’) FROM PRICE_LIST;
Correct Answer: B
Explanation/Reference:
Use TO_NUMBER on the prod_price column to convert from char to number to be able to multiply it with 0.25. Then use the TO_CHAR function (with formatting’$99, 999.00′) to convert the number back to char.
Incorrect:
Not C: Use the formatting’$99, 999.00′ with the TO_CHAR function, not with the TO_NUMBER function.
Note:
* Using the TO_CHAR Function
The TO_CHAR function returns an item of data type VARCHAR2. When applied to items of type NUMBER, several formatting options are available. The syntax is as follows:
TO_CHAR(number1, [format], [nls_parameter]),
The number1 parameter is mandatory and must be a value that either is or can be implicitly converted into a number. The optional format parameter may be used to specify numeric formatting information like width, currency symbol, the position of a decimal point, and group (or thousands) separators and must be enclosed in single
* Syntax of Explicit Data Type Conversion
Functions
TO_NUMBER(char1, [format mask], [nls_parameters]) = num1
TO_CHAR(num1, [format mask], [nls_parameters]) = char1
TO_DATE(char1, [format mask], [nls_parameters]) = date1
TO_CHAR(date1, [format mask], [nls_parameters]) = char1
Download Printable PDF. VALID exam to help you PASS.
|
|
C:
SELECT TO_CHAR(TO_NUMBER(‘$234.55’, ‘$99,999.99’)* .25, ‘$99,999.00’) FROM DUAL;
–> $58.64
C is the correct answer. B will fail during execution
Answer should be C, prod_price contains a dollar sign. To_number will give an error if you try to convert without format mask.