суббота, 29 июня 2013 г.

Oracle: '' LIKE '%' = false

Столкнулся с достаточно неожиданным поведением Oracle: пустые строки у него эквивалентны NULL, поэтому выражение:
'' LIKE '%'
дает false, хотя вроде бы '%' предполагает 0+ любых символов. Т.о., если по LIKE '%' фильтруется какая-то колонка, то записи с пустой строкой в этой колонке в выборку не попадут. Однако, есть и workaround, позволяющий добавить в выборку как записи с пустой строкой, так и с NULL:
COALESCE('',' ') LIKE '%' = true
PS конечно,  LIKE '%' - достаточно странное условие, реально у меня используется:
LIKE ?||'%'
но при пустом значении параметра оно превращается именно в  LIKE '%', которое по идее должно выдавать все записи.

Комментариев нет:

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