Определить тип данных столбца в SQLite

Я работаю над Android-приложением, где у пользователя есть разные опции для сортировки отображаемых данных, поступающих из базы данных. В настоящее время моя строка orderBy, которую я передаю методу Androids query (), выглядит следующим образом:

"LOWER("+columnName+") ASC" 

Проблема заключается в том, что если тип данных в столбце, заданном columnName, является целым числом, вызов LOWER () на нем приведет к сортировке по алфавиту, т. Е. Основанному только на самой левой цифре, что, конечно, не имеет никакого смысла Для числовых данных. Поэтому я хочу применить LOWER (), если тип данных столбца не является целым. Я имею в виду следующее заявление:

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

Часть в скобках – это то, что я не знаю, как это сделать. SQLite предоставляет функцию для определения типа данных столбца?

    Вам действительно нужен тип столбца или тип значения ? ( SQLite динамически типизирован , поэтому различие важно.)

    Если вы хотите использовать последний, вы можете использовать typeof(columnName) .

    Использование:

     PRAGMA table_info(table-name); 

    Для получения информации о таблице.

    Вы указали столбец как целое число при настройке таблицы? В противном случае sqlite сохранит его как текст, и сортировки будут действовать, как вы описали.

     create table if not exists exampletable (columnName integer);