Generalproger
Дата: 09.04.2015 13:40:16
Есть поле param с типом text[], нужно выбрать поля где второй элемент этого массива является NULL или определенным текстом
WHERE param[2]=(NULL||'23')
почему то не проходит, поскольку выборка с несколькими проверками то вбивать
param[2] IS NULL OR param[2] = '23' не хочется т.к. в проверке должны быть все AND и париться с повторением всей проверочной части еще раз не хочется
Generalproger
Дата: 09.04.2015 14:05:27
fte,
Спасибо огромное, то что надо, кстати может вы еще знаете как организовать запрос
ГДЕ ПОЛЕ = 0 (ЕСЛИ ПОЛЕ != 0 ТО ПОЛЕ < ЗНАЧЕНИЕ)
qwwq
Дата: 09.04.2015 15:41:08
не учите деточку антипаттернам.
// простите не удержался.
правильно с т.з. оптимизатора -- именно перечислить вот это вот всё в OR * [и охватить (), чтобы не собирать алтернативный OR снаружи]
даже такоё сахарок как IS DISTINCT FROM не охвачен отражением на индексное сравнение.
-- а почему -- просто подумайте над количеством операций, когда оно над константой (параметром), и когда -- над полем таблицы (всё вот это вот: "поместить, сравнить, присвоить").
не говоря об индексах
если что-то вам мешает написать правильный WHERE со скобками -- выбросьте это что-то в унитаз.
//* исключением является случай , когда вы озаботились функциональным индексом по именно этому выражению.