Cassandra“选择为”区分大小写

时间:2015-08-18 00:14:40

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

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

当我“选择app_id作为appID ”时,返回的列名称全部为小写。

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

然后我得到了:

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

在我的查询中,我指定大写“SELECT distinct app_id为 appID ”,但返回小写 APPID ”。

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

非常感谢。

更新: 我还尝试在列名'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]...)">

2 个答案:

答案 0 :(得分:5)

从DataStax文档中

  

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

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

使用双引号代替单引号应该适合您。

答案 1 :(得分:1)

只需在CQL documentation的第34页标识符和关键字&#34;

找到答案

通过在双引号(&#34;)中包含任意字符序列来定义第二种称为引用标识符的标识符。带引号的标识符绝不是关键字。

我试过

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

它正在工作:

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