CAST throws error on invalid data. TRY_CAST returns NULL instead – safer for user input.
CAST – Throws Error:
SELECT CAST('123' AS INT); -- Works: 123
SELECT CAST('abc' AS INT); -- Error: Conversion failed!
-- Query crashes, returns nothing
TRY_CAST – Returns NULL:
SELECT TRY_CAST('123' AS INT); -- Returns: 123
SELECT TRY_CAST('abc' AS INT); -- Returns: NULL (no error)
-- Query continues, you can handle NULL
Real-World Usage:
-- Import messy user data
SELECT
Name,
TRY_CAST(Age AS INT) AS Age,
TRY_CAST(SignupDate AS DATE) AS SignupDate
FROM ImportedData
WHERE TRY_CAST(Age AS INT) IS NOT NULL; -- Filter out invalid ages
Also Available: TRY_CONVERT, TRY_PARSE for similar safe conversions
