(Untitled)

Dec 12, 2014 23:17

Две фишки про (my)SQL, которые вполне стоит записать ( Read more... )

Leave a comment

Comments 15

zerkms December 12 2014, 21:36:17 UTC
"если $bar пустой" --- что такое пустой? NULL?

Reply

phorror December 12 2014, 21:37:37 UTC
В принципе, конерктное значение неважно. Что напишем в условии - то и будет. В данном случае - пустая строка.
Ты прав, сейчас переформулирую

Reply

zerkms December 12 2014, 21:38:57 UTC
А в чём особенность пустой строки? Почему нельзя сравнивать с пустой строкой?

Reply

phorror December 12 2014, 21:43:50 UTC
Это не особенность строки, это всем известная особенность оператора OR (которая да - не читается, из-за непривычной записи - мы сравниваем строку со строкой, а не с полем :)

Смотри, если передать пустую строку, то получится
('' = '' OR foo = '')
из которого мы всегда получаем единицу, то есть, условно говоря, условие превращается в хрестоматийное 1 = 1 и в итоге трока не усатсвует в сравнении. Красиво же?

Reply


david_m December 13 2014, 08:56:46 UTC
Что-то я торможу. '<=>' - это оператор такой есть?

Reply

phorror December 13 2014, 08:58:54 UTC
david_m December 13 2014, 09:01:34 UTC
Шайтан. А в постгресе нет...

Reply

david_m December 17 2014, 10:30:51 UTC
Оказывается, в постгресе тоже есть, но немного по-другому:
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

Up