powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / where 1=1
10 сообщений из 10, страница 1 из 1
where 1=1
    #39874713
it001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Иногда встречаю код типа:


select a
from sametabl
where 1=1
....

Зачем писать 1=1 ?
Поясните пожалуйста.
...
Рейтинг: 0 / 0
where 1=1
    #39874719
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
часто используется при макропостроение фразы WHERE
например

Oracle_PL_SQL
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
comm := "SELECT ... FROM .... WHERE 1=1";
if ... then
  comm := comm || ' AND field1=....';
end if;
if ... then
  comm := comm || ' AND field2=....';
end if;
....




иначе нужно как-то хитро определять, когда добавлять 'AND', а когда он не нужен
...
Рейтинг: 0 / 0
where 1=1
    #39874802
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsevиначе нужно как-то хитро определять, когда добавлять 'AND', а когда он не нужен
нет там ничего хитрого, можно сделать отдельную переменную для where и для первой не добавлять AND
...
Рейтинг: 0 / 0
where 1=1
    #39874821
fte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
it001Зачем писать 1=1 ?
Поясните пожалуйста.
Скорее всегоэто способ получить метаданные запроса, т.е. наименование колонок и соответствующие им типы данных,
но правильнее условие 1<>1, тогда запрос вернёт пустой результат, но метаданные Вы всё равно получите.
...
Рейтинг: 0 / 0
where 1=1
    #39874841
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex-ls,
Вопрос был: зачем так сделано.
А не как ещё можно сделать. Вопрос отвечен.
...
Рейтинг: 0 / 0
where 1=1
    #39875271
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
it001,

а еще
для динамически формируемых запросов можно писать и вставлять where-модификаторы в нужное место

Код: plsql
1.
2.
3.
...
  v_sql := Repalce(v_sql,'1=1',v_where_modif) ;
...
...
Рейтинг: 0 / 0
where 1=1
    #39875333
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhVit001,

а еще
для динамически формируемых запросов можно писать и вставлять where-модификаторы в нужное место


но тады непонятно нафуя там "1=1", чем он лучше /**MyWHERE**/
( /**MyGROUP**/| /**MyORDER**/.....)

Код: plsql
1.
2.
3.
4.
 v_where:= $wh$WHERE blahblahblah $wh$ ;
...
  v_sql := Repalce(v_sql,'/**v_where**/',v_where_modif) ;
...
...
Рейтинг: 0 / 0
where 1=1
    #39875364
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
it001, миллион лет тому назад Denis Popov учил меня, что так удобнее в отладке сложных запросов добавлять или удалять дополнительные условия. В общем, да, - так удобнее.
...
Рейтинг: 0 / 0
where 1=1
    #39875384
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,
1) буковок меньше
2) нет риска ошибиться (или вообще задумываться об этом) в регистре - для Replace() MyWHERE <>MYwHERE
3) для "1=1" нет ошибки синтаксического контроля "базового" запроса
Код: plsql
1.
2.
...
  WHERE (1=1) and tbl.colvalue=1234   ; 


а для коммент-константы синтаксический контроль до вставки модификатора выдаст ошибку
Код: plsql
1.
2.
/...
  WHERE /**MyWHERE**/  and tbl.colvalue=1234  ; 



P.S. Вообще-то лучше юзать "(1=1)"
Чтобы внутри модификатора можно было спокойно комбинировать AND и OR
...
Рейтинг: 0 / 0
where 1=1
    #39875402
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Впрочем
каждый сам себе хозяин-барин устанавливать дополнительные правила

А константные коменты могут быть очень полезны если их вставлять в самом начале текста долгоиграющих запросов
Так чтобы можно было легко идентифицировать процессы в pg_stat_activity
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / where 1=1
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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