Scala slick パッケージの "sortBy" メソッドは大文字と小文字を区別しないことがわかりました。例: 次のコマンドを実装した後: q.sortBy(columnMap("name").desc)
、私は得た:
TestingIsFun、テスト foo1、テスト foo、
これは予想される動作ですか?大文字と小文字を区別するにはどうすればよいですか? どうも。
Scala slick パッケージの "sortBy" メソッドは大文字と小文字を区別しないことがわかりました。例: 次のコマンドを実装した後: q.sortBy(columnMap("name").desc)
、私は得た:
TestingIsFun、テスト foo1、テスト foo、
これは予想される動作ですか?大文字と小文字を区別するにはどうすればよいですか? どうも。
現状では、slick はソートにおける RDBMS のデフォルトのケース処理に依存していると思います。RDBMSタイプについては言及していませんが、たとえばmysqlでは、ソートのデフォルトは大文字と小文字を区別しません。ただし、mysql では、Altering Mysql Table column to be casesensitive に従って、それをオーバーライドする方法で並べ替え対象の列を定義できます。ソリューションはスキーマ定義レベルであるため、これはクエリや洗練されたパラメーターに触れることなく機能します。最初に列をバイナリ文字列として定義できるはずです。必要に応じて滑らかにします。
O.DBType("binary")
滑らかな列定義では、そのために機能するはずです。
データベースに関して言えば、特定の列のソートは、その列の照合に従って行われます。デフォルトでは、MySQL は大文字と小文字を区別しない照合を使用します ( binary
charset を指定しない限り)。4 つのレベル (サーバー、データベース、テーブル、または列) のいずれかで、または特定の ORDER BY 句でのみ、デフォルトの照合をオーバーライドできます。どの方法が最も効率的かは、特定のユースケースによって異なります。大文字と小文字を区別する照合を使用すると明らかにパフォーマンスに影響するため、ほとんどの場合、テーブルまたは列レベルで行うのが理にかなっています。