在NHibernate中的IFNULL

时间:2009-08-20 22:25:08

标签: sql nhibernate null

现在我在NHibernate中有这样的东西:

Expression.Like(property, value, MatchMode.Anywhere)

并生成SQL,如:

property LIKE '%value%'

对于那种情况很好。在另一种情况下,我想要SQL:

IFNULL(property LIKE '%value%', 0)

但我在手册中没有看到任何涉及IFNULL的例子,我甚至找不到任何普通的API文档。

我找到了Expression.Sql(),但只是手册中的一个例子,它让我有点害怕使用我没有看到任何真实文档的东西,并且在我自己做SQL的时候我正在使用NHibernate试图摆脱它。

在NHibernate中有一种比Expression.Sql()更好的方法吗?

2 个答案:

答案 0 :(得分:2)

我假设这是在WHERE子句中,此时IFNULL(property LIKE '%value%', 0)不是有效的SQL,因为LIKE的计算结果为true或false,0都不是。

我怀疑你确实想要property LIKE '%value%' OR property IS NULL

如果是这种情况:

.Add(
    Expression.Disjunction()
    .Add(Expression.Like(property, value, MatchMode.Anywhere))
    .Add(Expression.IsNull(property))
)

答案 1 :(得分:0)

这本身不是答案,但我建议您寻找COALESCE()Here你可以看到原因。