Определить тип данных столбца в 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 предоставляет функцию для определения типа данных столбца?

Solutions Collecting From Web of "Определить тип данных столбца в SQLite"

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

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

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

 PRAGMA table_info(table-name); 

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

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

 create table if not exists exampletable (columnName integer);