2014-07-16 55 views
1

我知道我需要使用Restrictions.Eq和Projections.SqlFunction,但我一直在嘗試幾個小時沒有任何成功(我的測試應用程序崩潰)。沒有人有一個QueryOver例如,將執行以下操作中的Oracle:如何使用Nhibernate QueryOver調用Oracle的regexp_like函數?

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

更新:好吧,我認爲問題的一部分是Restrictions.Eq期望的平等,但在這種情況下,沒有平等的,這是隻是在WHERE子句中的函數調用...

回答

5

的語法應該是這樣的:

// 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) 
    ... 
+0

你是一個活的更安全的人,謝謝!我也會投票,但看起來我還沒有足夠的聲望。 – Xorcist

+0

偉大的,它無論如何先生;)享受NHibernate,偉大的工具... –

+0

甲骨文正則表達式的完整例子很難得到,+1。 :) – zx81

相關問題