Это не особенность строки, это всем известная особенность оператора OR (которая да - не читается, из-за непривычной записи - мы сравниваем строку со строкой, а не с полем :)
Смотри, если передать пустую строку, то получится ('' = '' OR foo = '') из которого мы всегда получаем единицу, то есть, условно говоря, условие превращается в хрестоматийное 1 = 1 и в итоге трока не усатсвует в сравнении. Красиво же?
Comments 15
Reply
Ты прав, сейчас переформулирую
Reply
Reply
Смотри, если передать пустую строку, то получится
('' = '' OR foo = '')
из которого мы всегда получаем единицу, то есть, условно говоря, условие превращается в хрестоматийное 1 = 1 и в итоге трока не усатсвует в сравнении. Красиво же?
Reply
Reply
Reply
Reply
IS [ NOT ] DISTINCT FROM
http://www.postgresql.org/docs/9.1/static/functions-comparison.html
Это из стандарта SQL 99 (http://blog.jooq.org/2012/09/21/the-is-distinct-from-predicate/)
Reply
Leave a comment