Soms vindt er impliciete conversie van een datatype plaats. Dat houdt in dat het systeem automatisch een datatype omzet. Bij de tabel employees is de kolom bonus bijvoorbeeld van het type VARCHAR (tekst).
Stel dat je daar toch mee wil rekenen en er 100 bij op wil tellen. Dan wordt automatisch het veld bonus omgezet in een numeriek datatype.
SELECT last_name, bonus, bonus + 100
FROM employees
WHERE bonus IS NOT NULL;
Ook de functies MIN, MAX, AVG, en SUM werken.
SELECT MIN(bonus), MAX(bonus), AVG(bonus), SUM(bonus)
FROM employees;
Het is echter niet verstandig om het op impliciete datatype conversie te laten aankomen. Gebruik zo nodig conversiefuncties zoals CAST of CONVERT die hierna behandeld worden, zodat er expliciete conversie plaatsvindt. Het maakt SQL beter leesbaar en robuuster. Maar nog beter is om bij het maken van de database voor numerieke informatie het juiste type te kiezen (bijvoorbeeld INT of DECIMAL) en géén VARCHAR.
Het gaat bijvoorbeeld fout als je CONCAT gebruikt in combinatie met AVG voor informatie van het type VARCHAR. De tweede kolom van onderstaande informatie is niet de uitvoer die je graag zou hebben. In de derde kolom is ROUND ervoor gezet en wordt het weer hersteld.
SELECT AVG(bonus), CONCAT(AVG(bonus), ' dollar'), CONCAT(ROUND(AVG(bonus)), ' dollar')
FROM employees;