Недавно при написании sql запроса с выборкой данных из базы формата Sqlite3, нужно было выбрать информацию по определенному условию ‘where field10>’10’ ‘, но столбец field10 по типу оказался строковым (String), поэтому выборка сработала не так как нужно. Чтобы скрипт отработал правильно необходимо столбец field10 пере конвертировать из строкового в числовой формат и затем сравнивать как число.
SELECT * FROM Base3 WHERE CAST(Field10 as integer)>=11;
Сортировка строковых данных выполняется немного другим способом по сравнению с числовым, при сортировке результата запроса если число сохранено как текст то результат получится в формате 1,11,111…2,20,21…3,20, т.е. все что начинается на единицу, потом на двойку и так далее, а не по порядку чисел, как хотелось бы 1,2,3. Чтобы это сортировка выполнилась так как нам нужно необходимо символ представить в виде числа для этого используем оператор CAST в связке с оператором ORDER BY (сортировки):
SELECT * FROM Base3 ORDER BY CAST("field15" as integer)
также можно использовать конвертации в другие типы: real, numeric (float):
SELECT * FROM Base3 ORDER BY CAST("field3" as real)
Таким образом пусть данные у нас хранятся в том виде в котором они поступают в таблицу базы данных, а выводить в результат запроса мы можем в удобном для нас представлении.
Спасибо! Очень помогли.