Determinar el tipo de datos de una columna en SQLite

Estoy trabajando en una aplicación de Android donde el usuario tiene diferentes opciones para ordenar los datos mostrados que provienen de la base de datos. En la actualidad, mi orden de la cadena que paso a Androids query () método se ve así:

"LOWER("+columnName+") ASC" 

El problema con esto es que si el tipo de datos en la columna especificada por columnName es entero, llamando a LOWER () en él hará que sea ordenado alfabéticamente, es decir, basado sólo en el dígito de la izquierda, que por supuesto no tiene sentido Para datos numéricos. Por lo tanto, sólo quiero aplicar LOWER () si el tipo de datos de la columna no es entero. Lo que tengo en mente es una declaración como esta:

 "CASE WHEN [data type of columnName is integer] THEN "+columnName+" ASC ELSE LOWER("+columName+") ASC END" 

La parte entre paréntesis es lo que no sé hacer. SQLite proporciona una función para determinar el tipo de datos de una columna?

3 Solutions collect form web for “Determinar el tipo de datos de una columna en SQLite”

¿Realmente desea el tipo de la columna , o el tipo del valor ? ( SQLite está dinámicamente digitado , por lo que la distinción es importante.)

Si desea este último, puede utilizar typeof(columnName) .

Utilizar:

 PRAGMA table_info(table-name); 

Para obtener información de la tabla.

¿Declaró la columna como un entero al configurar la tabla? De lo contrario, sqlite lo almacenará como texto y los tipos actuarán como lo ha descrito.

 create table if not exists exampletable (columnName integer); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.