SQLite3 конвертирование из строки в число

Sqlite3Недавно при написании 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)

Таким образом пусть данные у нас хранятся в том виде в котором они поступают в таблицу базы данных, а выводить в результат запроса мы можем в удобном для нас представлении.

  1. Спасибо! Очень помогли.

Оставить комментарий


Примечание - Вы можете использовать эти HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>