barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

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

Oracle: '' LIKE '%' = false

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

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

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