【问题标题】:Cassandra "select as" to be case sensitiveCassandra“选择为”区分大小写
【发布时间】:2015-11-10 18:07:39
【问题描述】:

Cassandra 版本:2.2.0

我有如下 Cassandra 表:

 app_id                           | ts                       | os_name   
----------------------------------+--------------------------+-----------
 bb61ffae3b8f73e61572b61450d6d5d6 | 2015-08-04 22:00:00-0700 |   Android
 bb61ffae3b8f73e61572b61450d6d5d6 | 2015-08-05 22:00:00-0700 |   Android

当我“select app_id as appID”时,返回的列名都是小写的。

cqlsh:myDB> SELECT app_id as appID FROM daily_activity_report limit 10;

然后我得到:

 appid
----------------------------------
 bb61ffae3b8f73e61572b61450d6d5d6
 7b87263e57a34deccb462b26786896b3

在我的查询中,我指定 upper-case "SELECT distinct app_id as appID",但返回的是 lower-case "应用程序”。

我是否缺少任何配置变量来启用区分大小写的列名?如何使其区分大小写?

非常感谢。


更新: 我还尝试在列名 'appID' 中添加引号,如下所示,但没有运气。

cqlsh:myDB> SELECT app_id as 'appID' FROM daily_activity_report limit 10;

回复:

SyntaxException: <ErrorMessage code=2000 [Syntax error in CQL query] 
message="line 1:26 no viable alternative at input 'appID' (SELECT distinct app_id as ['appI]...)">

【问题讨论】:

    标签: database cassandra cassandra-2.0 case-sensitive case-insensitive


    【解决方案1】:

    来自 DataStax 文档,

    使用 CQL 3 创建的键空间、列和表名不区分大小写,除非用双引号括起来。如果您使用任何大写字母输入这些对象的名称,Cassandra 会以小写形式存储名称。您可以使用双引号强制大小写。

    http://docs.datastax.com/en/cql/3.0/cql/cql_reference/ucase-lcase_r.html

    使用双引号而不是单引号应该适合您。

    【讨论】:

      【解决方案2】:

      只需在“标识符和关键字”部分的CQL documentation自己找到答案

      还有第二种标识符,称为带引号的标识符,通过在 双引号(") 中包含任意字符序列来定义。带引号的标识符绝不是关键字。

      我试过了

      cqlsh:myDB> SELECT app_id as "appID" FROM daily_activity_report limit 10;
      

      它正在工作:

       appID
      ----------------------------------
       bb61ffae3b8f73e61572b61450d6d5d6
       7b87263e57a34deccb462b26786896b3
      

      【讨论】:

        猜你喜欢
        • 2014-05-24
        • 1970-01-01
        • 2011-11-25
        • 2011-05-16
        • 1970-01-01
        • 1970-01-01
        • 2014-05-22
        • 1970-01-01
        • 2021-10-19
        相关资源
        最近更新 更多