powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Выполняется недописанный запрос
9 сообщений из 9, страница 1 из 1
Выполняется недописанный запрос
    #39095170
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.

Случайно заметил ошибку в тексте sql который sqlite кушал без исключения.

Код: sql
1.
select * from table where id



в таблице поле id есть, но условие к нему дописать забыли.
почему это работает и какое условие в этом случае применяется?

В oracle ругается
SQL> select * from tttt where id;
select * from tttt where id
ORA-00920: неверен реляционный оператор

--
~PPA() {} //
...
Рейтинг: 0 / 0
Выполняется недописанный запрос
    #39095631
pit_alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPA,

Код: sql
1.
select * from table where id



аналог

Код: sql
1.
select * from table where id is not null and id <> 0 
...
Рейтинг: 0 / 0
Выполняется недописанный запрос
    #39095802
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pit_alex,

Версия похоже на правду - а это документировано или просто подобрано методом тыка?

sqlite> CREATE TABLE t(id int);
sqlite> select count(*) from t;
0
sqlite> insert into t(id) values (0);
sqlite> insert into t(id) values (1);
sqlite> select * from t;
0
1
sqlite> select * from t where id;
1
sqlite> insert into t(id) values ('xxxx');
sqlite> select * from t where id;
1
sqlite> insert into t(id) values (2);
sqlite> insert into t(id) values (3);
sqlite> select * from t where id;
1
2
3
sqlite> select * from t;
0
1
xxxx
2
3
sqlite>
...
Рейтинг: 0 / 0
Выполняется недописанный запрос
    #39096171
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pit_alex,

Спасибо. сходится.
sqlite тут зачем-то неявно кастит к bool
проверил в mysql - он тоже такой sql выполняет - разработчики засыпали грабли листвой :)

В доке пишут, что типа bool в sqlite нет вообще

1.1 Boolean Datatype
SQLite does not have a separate Boolean storage class. Instead, Boolean values are stored as integers 0 (false) and 1 (true).
...
Рейтинг: 0 / 0
Выполняется недописанный запрос
    #39096272
pit_alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPA,

Определял методом тыка, а вообще SQLite достаточно странный зверек, иногда на такое натыкаешься ... :)
...
Рейтинг: 0 / 0
Выполняется недописанный запрос
    #39096910
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPAВ доке пишут, что типа bool в sqlite нет вообще

1.1 Boolean Datatype
SQLite does not have a separate Boolean storage class. Instead, Boolean values are stored as integers 0 (false) and 1 (true).Все верно. Точно так-же как в Си. Оттуда же скорее всего и данный прикол синтаксиса растет.
Но в Си это часть спецификации, а тут - недокументированная фича. Так что использовать не рекомендуется.
...
Рейтинг: 0 / 0
Выполняется недописанный запрос
    #39096926
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlВсе верно. Точно так-же как в Си. Оттуда же скорее всего и данный прикол синтаксиса растет.
Но в Си это часть спецификации, а тут - недокументированная фича. Так что использовать не рекомендуется.Нет, вру. К Си это отношения не имеет, хотя и очень похоже.
Сейчас копаюсь в parse.y - там всего одна секция "Expression Processing" и нету жесткого разделения на "выражение часть выражений" и "выражение часть списка". В общем, это артефакт от попытки упростить CFG.
...
Рейтинг: 0 / 0
Выполняется недописанный запрос
    #39096931
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

За такие неявные и очень опасные приведения из С и придумали 30 лет назад С++

Автор sqlite на этот запрос ответил так:
"Why is the fact that SQLite can handle boolean expressions that
befuddle Oracle a problem?"

Сам я считаю, что Oracle в этом случае помогает избежать ошибки.
может программист хотел написать условие, отвлекся и забыл это сделать
а запрос работает! в sql ведь нет диагностики типа warning из С/C++

У себя я это вообще случайно заметил
из-за того что это поле было ID - оно работало верно
...
Рейтинг: 0 / 0
Выполняется недописанный запрос
    #39096945
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPAWhite Owl,

За такие неявные и очень опасные приведения из С и придумали 30 лет назад С++Вовсе не за это. И вот как раз синтаксис типа if(variable) прекрасно портирован в С++.

PPAАвтор sqlite на этот запрос ответил так:
"Why is the fact that SQLite can handle boolean expressions that
befuddle Oracle a problem?"Ну правильно в общем-то.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Выполняется недописанный запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]