0

並べ替え順序 (昇順または降順) に関係なく、常に最後に null 値を保持する必要があります。

このようなコードを使用しました。

criteria
   .AddOrder(Order.Desc(
          Projections.Cast(
                 NHibernateUtil.Decimal, 
                 Projections.Property("col1"))));

criteria
     .AddOrder(Order.Asc(
           Projections.Cast(
                 NHibernateUtil.Decimal, 
                 Projections.Property("col1"))));

私はこのリンクを読みました:

http://www.techrepublic.com/blog/datacenter/control-null-data-in-oracle-using-the-order-by-clause/121

アップデート

このリンクでは、並べ替えの最後にヌルが表示されます。上記のコードの nhibernate でこれを実装するにはどうすればよいですか? 助けはありますか?

4

1 に答える 1

1

標準のSQL関数COALESCEを使用して、ORDER BY

using NHibernate.Dialect.Function;
using NHibernate.Criterion;
...

// sql function definition
var sqlFunction = new SQLFunctionTemplate(NHibernateUtil.String
                                         , "COALESCE(Col1, 'zzzz')");
// create projection
var projection = Projections.SqlFunction(sqlFunction, NHibernateUtil.String);

// order by projection
criteria.AddOrder(new Order(projection, false));

そして、それNULLを最後または最初に移動するためにどのように置き換えられるか('zzzzz'または'000'または..)は、ニーズによって異なります。したがって、順序が昇順の場合、低文字が降順の場合、投影は高文字を使用します。いくつかのオーバーヘッドがありますが、それはその仕事をします

于 2012-11-15T19:13:06.837 に答える