So, if I understand correctly, if it is going to divide by 0, then you want it to return 0 instead. Then none of the solutions I provided will help actually. In that case, you likely want something like:
SELECT CAST(ROUND(COLUMN_A*100/COLUMN_B,2) as decimal(5,2)) AS "Percentage"
FROM TABLE
WHERE COLUMN_B <> 0
UNION ALL
SELECT 0
FROM TABLE
WHERE COLUMN_B = 0
OR
SELECT CASE COLUMN_B
WHEN 0 THEN 0
ELSE CAST(ROUND(COLUMN_A*100/COLUMN_B,2) as decimal(5,2))
END AS "Percentage"
FROM TABLE
Both should give you the same result, just ordered differently. Different execution plans and thus different performance.
First one does the calculation when the value of COLUMN_B is non-zero and does a UNION to get 0 when it is zero. The second one does that all in a single select...
The above is all just my opinion on what you should do.
As with all advice you find on a random internet forum - you shouldn't blindly follow it. Always test on a test server to see if there is negative side effects before making changes to live!
I recommend you NEVER run "random code" you found online on any system you care about UNLESS you understand and can verify the code OR you don't care if the code trashes your system.