С Типы данных в SQLite версии 3 / 4.1. Порядок сортировки :
Значение INTEGER или REAL на меньше любого значения TEXT или BLOB.
Очевидно:
SELECT TYPEOF(3);
возвращает integer
и
SELECT TYPEOF('2');
SELECT TYPEOF('20');
возвращает text
. Таким образом, здесь нет преобразования:
SELECT 3 < '2';
, которое возвращает true
. Но есть неявное преобразование в выражении, подобном этому:
SELECT 3 < '2' + 0;
, которое возвращает false
, и это преобразование вызывается оператором +
, который применяет число c операция в '2'
, таким образом, преобразовывая его в integer
. Изменить, чтобы уточнить: Это поведение применяется только к литеральным значениям, таким как 3
и '2'
. Когда речь идет о выражениях или значениях столбцов, происходит неявное преобразование . Поэтому, если вы определите таблицу наподобие:
create table test(id integer);
insert into test(id) values (1), (2), (3);
, выражение наподобие:
select * from test where id > '1'
вернет:
| id |
| --- |
| 2 |
| 3 |
см. demo .