如何使用Nhibernate QueryOver调用Oracle的regexp_like函数? [英] How to call Oracle's regexp_like function with Nhibernate QueryOver?

查看:92
本文介绍了如何使用Nhibernate QueryOver调用Oracle的regexp_like函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道我需要使用Restrictions.Eq和Projections.SqlFunction,但是我已经尝试了好几个小时都没有成功(我的测试应用程序崩溃了).没有人有一个QueryOver示例,它将在Oracle中执行以下操作:

I'm aware I need to use Restrictions.Eq and Projections.SqlFunction, but I've been trying for hours without any success (my test app just crashes). Does anyone have an QueryOver example that would do the following in Oracle:

SELECT
  *
FROM
  V_LOG_ENTRIES
WHERE
  regexp_like(ENTRY_TEXT, '(\WPlaced\W)');

更新:好的,我认为部分问题是Restrictions.Eq期望一个相等,但是在这种情况下不存在相等,它只是WHERE子句中的一个函数调用...

UPDATE: Okay, I think part of the problem is that Restrictions.Eq expects an equality, but there is no equality in this case, it's just a function call in the WHERE clause...

推荐答案

语法应如下所示:

// this is inlined string, but could be concatenated from some params
var sql = @" regexp_like(ENTRY_TEXT, '(\WPlaced\W)') " +
           " AS isLike";
var sqlString = new SqlString(sql);

// the ICriterion
var criterion = new NHibernate.Criterion.SQLCriterion(sqlString
    , new string[] {}
    , new IType[] {}
    );

// the query
var query = session.QueryOver<LogEntry>()
    .Where(criterion)
    ...

这篇关于如何使用Nhibernate QueryOver调用Oracle的regexp_like函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆