截取字符串NHIBERNATE

4

难以置信,我找不到答案,但你如何执行像下面这样的查询:

SELECT LTRIM(RTRIM("ColumnName")) FROM ....

在NHibernate中

谢谢

1个回答

4

作为POCO的银行示例:

public class Bank
{
  public virtual int    ID { get; set; }
  public virtual string City { get; set; }
  public virtual string Street { get; set; }
}

对于 LTRIM(RTRIM... 有一种语法。

Bank bank = null;
var session = ...;
var query = session.QueryOver<BankAddress>()
  .SelectList(l => l

    // properties ID, City
    .Select(c => c.ID).WithAlias(() => bank.ID)
    .Select(c => c.City).WithAlias(() => bank.City)  

    // projection Street 
    .Select(Projections.SqlProjection(               
        " LTRIM(RTRIM({alias}.Street)) as Street"  // applying LTRIM(RTRIM
        , new string[] { "Street" }
        , new IType[] { NHibernate.NHibernateUtil.String }
  ))
  .TransformUsing(Transformers.AliasToBean<Bank>())
  ;

var list = query.List<Bank>();

1
此外,Linq2NH 还可以处理对 Trim/TrimStart/TrimEnd 的调用,这将解析为 HQL trim() 函数,该函数将解析为 SQL ANSI TRIM,除非不支持该函数,在这种情况下,它将由 LTRIM/RTRIM 模拟。此外,一些方言支持在 HQL 中直接使用 ltrim/rtrim。 - Oskar Berggren

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接