Гладкий столбец таблицы сравнения с нулевым значением

Может кто-нибудь, пожалуйста, скажите мне, как мы сравниваем столбец таблицы с NULL, используя приподнятое вложение slick.

Чего я хочу добиться в mysql:

select * from Users where email = '<some_email_addr>' and ( removed = NULL OR removed <= 1 )

Это дает мне ошибки в x.removed === null, когда я пытаюсь:

val q = for {
    x <- Users
        if x.email === email && ( x.removed === null || x.removed <= 1 )
} yield x.removed

Спасибо


person Sameerel    schedule 16.07.2013    source источник


Ответы (3)


Пытаться:

x.removed.isNull

Я думаю, это то, что вы ищете

person cmbaxter    schedule 16.07.2013
comment
isNull и isNotNull устарели и заменены на isEmpty и isDefined. Источник: отличная документация - person JayL; 14.06.2015

Как сказал daaatz и согласно http://slick.typesafe.com/doc/2.1.0/upgrade.html#isnull-and-isnotnull следует использовать isEmpty, но он работает только со столбцами параметров. Обходной путь — x.removed.?.isEmpty.

person Mar77i    schedule 10.09.2014

Пытаться

x.removed.isEmpty()

В scala нет нулей ;-)

person daaatz    schedule 16.07.2013
comment
Спасибо .. но я попробовал это и теперь получаю: значение isEmpty не является членом scala.slick.lifted.Column[Option[Int]] - person Sameerel; 16.07.2013
comment
.isNull - правильный ответ - в scala может и не быть нулей, но они точно есть в SQL! Однако я должен признать, что хотел использовать и обычные методы Option[]. Было бы здорово, если бы Slick добавил .isEmpty / .isDefined, чтобы сделать его более похожим на Scala. - person markltbaker; 19.09.2013
comment
Конечно, в Scala разрешены нули. Они просто почти всегда плохая идея и почти никогда не используются. - person nafg; 02.06.2016