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]...)">
答案 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