TRY_CONVERT() in T-SQL would return a value cast to the specified data type if the cast succeeded; otherwise it would return NULL.
Is there a similar function in ORACLE or a way to reproduce this behaviour?
Advertisement
Answer
If you’re not on Oracle 12.2 you can use a regex to determine if the value is valid before casting. For an integer (in the math sense, meaning optional sign, then one or more digits):
SELECT CASE WHEN REGEXP_LIKE(col, '^[-+]?[0-9]+$') THEN CAST(col AS NUMBER) END AS num FROM myTable
This gives the same behavior as the Oracle 12.2 DEFAULT NULL ON CONVERSION ERROR.
For values other than integers the same approach applies, but the regexes get tougher.