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

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

"LOWER("+columnName+") ASC"

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

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

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

8
задан Steven Meliopoulos 23 June 2010 в 20:51
поделиться

3 ответа

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

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

12
ответ дан 5 December 2019 в 07:34
поделиться

Используйте:

PRAGMA table_info(table-name);

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

9
ответ дан 5 December 2019 в 07:34
поделиться

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

create table if not exists exampletable (columnName integer);
0
ответ дан 5 December 2019 в 07:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: