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:
- Error: Error: Los tipos enteros no están permitidos (en 'layout_height' con el valor '10')
- Generic OR en lugar de AND <T extends Number | CharSequence>
- ¿Cómo saber cuál es el tipo MIME según el archivo?
- Multiplicando un vector2 por un escalar (LibGDX)
- Kotlin - cuando la expresión con el tipo de retorno de la función
"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?
- Tabla de SQLite con columnas de columna de enteros
- Tipificación de un objeto de la clase padre al niño
- Android: Obtención de la lista de todos los archivos de un tipo específico
- Tipos Primitivos de Java: int vs. Integer
- En Android OS o Java, ¿cuál es la diferencia entre una secuencia de caracteres y una cadena?
- Qué son los tipos de datos en SQLite que soportan android
- Las fuentes ttf personalizadas no se muestran correctamente en TextView en Android 4.4 KitKat
- Smartcast es imposible porque propery tiene getter abierto o personalizado
¿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);