【问题标题】:CQL3 order by statement is ordering uppercase strings firstCQL3 order by statement 是先排序大写字符串
【发布时间】:2013-02-19 22:33:24
【问题描述】:

我发现我的 CQL3 order by 语句返回了奇怪的结果,其中任何以大写字母开头的字符串都先排序,然后再排序小写字符串。

这是一个示例表:

CREATE TABLE tester 
(rowkey text, colname text, colvalue text, primary key (rowkey, colname)) 
WITH COMPACT STORAGE;

如果我用一些测试数据填充它并运行以下查询,这就是我得到的:

查询:

SELECT * FROM tester WHERE rowkey = 'test' ORDER BY colname ASC

结果:

rowkey | colname | colvalue
-------+---------+---------
test   | ABC     | blah
test   | Abc     | blah
test   | BBC     | blah
test   | abc     | blah
test   | bbC     | blah
test   | bbc     | blah

我看不出这是预期的行为。有谁知道它为什么要这样排序以及如何实现更明智的排序?

【问题讨论】:

    标签: cassandra cql3


    【解决方案1】:

    您的列按字典顺序排序,其中大写字符优先于小写字符。

    【讨论】:

    • 那么有没有办法对列 ABC、Abc、abc、BBC、bbC、bbc 进行排序?
    • 也许我遗漏了一些东西,但它似乎更像是我的列正在排序的二进制表示排序顺序,而不是字典顺序。
    • 记住不是每个人都使用相同的字符或具有相同的顺序是有帮助的,这有助于解释为什么它可能没有明显的意义。
    • 创建不区分大小写的排序是可能的,但到目前为止还没有引起开发人员的兴趣。 issues.apache.org/jira/browse/CASSANDRA-4245
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    相关资源
    最近更新 更多