Given an account table that has two columns, which are account_holder and amount.
Exaample
account_holder | amount
------------------------
James Brown | $2302.03
Phille Jackson | $5643.55
Both columns are with the type VARCHAR(20).
What I need to do is to multiply the amount with 5% to get the interest.
The expected output would be like
account_holder | interest
------------------------
James Brown | $115.10
Phille Jackson | $282.18
What I can come up with is to cast the amount to money type. And concat a dollar sign with the number after calculation. Is there any better way to do it?
CodePudding user response:
Best approach is to change the data type of your column. Since you can not change data type , you can try like below :
CREATE TABLE Accounts (
account_holder Varchar(20) NOT NULL,
Amount Varchar(20)
);
INSERT INTO Accounts (account_holder, Amount) VALUES ('James Brown', '$2302.03');
INSERT INTO Accounts (account_holder, Amount) VALUES ('Phille Jackson', '$5643.55');
-- 1. Remove $
-- 2. Convert to decimal
-- 3. Get Interest
-- 4. Again convert to decimal with 2 places
-- 5. Concat $
SELECT account_holder, Amount,
CONCAT('$', CONVERT(DECIMAL(10,2),(CONVERT(DECIMAL(10,2), RIGHT(Amount, len(AMOUNT)-1)))/20)) Interest
FROM Accounts
