2

Scala slick パッケージの "sortBy" メソッドは大文字と小文字を区別しないことがわかりました。例: 次のコマンドを実装した後: q.sortBy(columnMap("name").desc)、私は得た:

TestingIsFun、テスト foo1、テスト foo、

これは予想される動作ですか?大文字と小文字を区別するにはどうすればよいですか? どうも。

4

2 に答える 2

1

現状では、slick はソートにおける RDBMS のデフォルトのケース処理に依存していると思います。RDBMSタイプについては言及していませんが、たとえばmysqlでは、ソートのデフォルトは大文字と小文字を区別しません。ただし、mysql では、Altering Mysql Table column to be casesensitive に従って、それをオーバーライドする方法で並べ替え対象の列を定義できます。ソリューションはスキーマ定義レベルであるため、これはクエリや洗練されたパラメーターに触れることなく機能します。最初に列をバイナリ文字列として定義できるはずです。必要に応じて滑らかにします。

O.DBType("binary")滑らかな列定義では、そのために機能するはずです。

于 2014-12-14T00:46:39.003 に答える
1

データベースに関して言えば、特定の列のソートは、その列の照合に従って行われます。デフォルトでは、MySQL は大文字と小文字を区別しない照合を使用します ( binarycharset を指定しない限り)。4 つのレベル (サーバー、データベース、テーブル、または列) のいずれかで、または特定の ORDER BY 句でのみ、デフォルトの照合をオーバーライドできます。どの方法が最も効率的かは、特定のユースケースによって異なります。大文字と小文字を区別する照合を使用すると明らかにパフォーマンスに影響するため、ほとんどの場合、テーブルまたはレベルで行うのが理にかなっています。

于 2014-12-14T13:12:59.863 に答える