Mi sono chiesto come verificare che un campo contenga un valore intero, senza dover ricorrere alle espressioni regolari o a strane procedure e senza dover usare linguaggi esterni per questa verifica.

Ed ecco la soluzione:

SELECT * FROM tabella WHERE concat('',colonnaINT * 1) = colonnaINT

In pratica verifico se il prodotto della colonnaINT moltiplicato per 1, corrisponde al valore colonnaINT.
È utile anche per verificare se una colonna contenga valori non interi (usando l’operatore !=).

Questo metodo dovrebbe funzionare nella maggior parte dei casi, fatta esclusione per valori esponenziali come 1e4 e 1.2e5.123.

Spero vi sia di aiuto 🙂