SELECT
CONCAT(CONCAT(FIRST_NAME, ' '), LAST_NAME) AS "Fn and Ln",
HIRE_DATE AS "HireDate",
COMMISSION_PCT AS "Premium",
REPLACE('COMMISSION_PCT', '-', '0')
FROM HR.EMPLOYEES
I have to replace empty values in column COMISSION_PCT
with 0, but I get a new column named 'REPLACE('COMMISSION_PCT','-','0')'
But it doesnt replace empty values with 0
CodePudding user response:
SELECT
CONCAT(CONCAT(FIRST_NAME, ' '), LAST_NAME) AS "Fn and Ln",
HIRE_DATE AS "HireDate",
CASE COMMISSION_PCT
WHEN NULL THEN '0'
WHEN '' THEN '0'
ELSE COMMISSION_PCT
END AS "Premium"
FROM HR.EMPLOYEES
It is not clear if by empty you mean that the value is null
or it is an empty string, in fact the type of the column is entirely ambiguous... so this solution using a CASE
statement covers both possibilities.
For null
we could use COALESCE
or other provider specific implementations, but you haven't mentioned the type of database that you are using. This is an example if COMMISSION_PCT
is a string column type:
SELECT
CONCAT(CONCAT(FIRST_NAME, ' '), LAST_NAME) AS "Fn and Ln",
HIRE_DATE AS "HireDate",
COALESCE(COMMISSION_PCT, '0') AS "Premium"
FROM HR.EMPLOYEES
Remove the quotes around the 0
for numeric types
REPLACE
is designed to replace all instances of a string within a string with the specified value, so to replace all the -
characters with 0
, but it requires a non-empty string value to operate on, in your case the value is probably missing altogether.
CodePudding user response:
Try this
SELECT
CONCAT(CONCAT(FIRST_NAME, ' '), LAST_NAME) AS "Fn and Ln",
HIRE_DATE AS "HireDate",
REPLACE(COMMISSION_PCT, '-', '0') AS "Premium"
FROM HR.EMPLOYEES