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 以覆盖该列的方式定义要排序的列。这无需触及查询或光滑参数即可工作,因为解决方案处于模式定义级别。首先应该可以将列定义为二进制字符串,如果需要,可以使用 slick:

O.DBType("binary")在光滑的列定义中应该适用于此。

于 2014-12-14T00:46:39.003 回答
1

当涉及到数据库时,特定列的排序将根据该列的排序规则进行。默认情况下,MySQL 使用不区分大小写的排序规则(除非您指定binary字符集)。您可以在 4 个级别(服务器、数据库、表或列)中的任何一个级别(服务器、数据库、表或列)甚至仅在特定的 ORDER BY 子句中覆盖默认排序规则。哪种方式最有效,取决于您的特定用例。使用区分大小写的排序规则显然会影响性能,因此在大多数情况下,无论是在级别还是在级别都有意义。

于 2014-12-14T13:12:59.863 回答