SELECT常数值是Cassandra
SELECT contant value is Cassandra
我正在尝试在 Cassandra CQL3 中做一个简单的 select,在常量列名称下包含一个硬编码值(常量),但我无法让它工作
这是查询
SELECT 1 as "id"
在我使用的所有类型的 DBMS 中工作正常,但在此处抛出此错误:
Error: ResponseError: line 1:7 no viable alternative at input '1' (SELECT [1]...)
正确的语法是什么?
不幸的是,CQL 不是 SQL,并且像这样的查询在 cqlsh 中不能像在关系对应项中那样工作。 DataStax SELECT documentation 表示选择器必须是以下之一:
- 栏目名称
- WRITETIME(列名)
- TTL(列名)
- 函数
虽然 SELECT 1 as id
查询可能不起作用,但还有其他稍微有用的东西可以用。例如,如果我需要快速生成一个 UUID,我可以使用以下查询来实现:
aploetz@cqlsh:Whosebug> SELECT uuid() FROM system.local;
system.uuid()
--------------------------------------
a55c17f7-d19d-4531-85be-75551e3fd546
(1 rows)
这样做有两个原因:
SELECT 子句调用 uuid() 函数。
system.local table 只包含一行。如果你 运行 这个 SELECT 反对另一个 table,它会 return 与 CQL 行一样多的 UUID。
我发现了一种非常棘手的方法。
SELECT blobAsBigInt(bigintAsBlob(1)) AS c FROM table;
将为您提供值为 1 的常量列。如果您想自己尝试这一切,请确保
SELECT blobAsBigInt(bigintAsBlob(1)) AS c FROM table LIMIT 1;
否则你永远听不到它的结尾。
我正在尝试在 Cassandra CQL3 中做一个简单的 select,在常量列名称下包含一个硬编码值(常量),但我无法让它工作
这是查询
SELECT 1 as "id"
在我使用的所有类型的 DBMS 中工作正常,但在此处抛出此错误:
Error: ResponseError: line 1:7 no viable alternative at input '1' (SELECT [1]...)
正确的语法是什么?
不幸的是,CQL 不是 SQL,并且像这样的查询在 cqlsh 中不能像在关系对应项中那样工作。 DataStax SELECT documentation 表示选择器必须是以下之一:
- 栏目名称
- WRITETIME(列名)
- TTL(列名)
- 函数
虽然 SELECT 1 as id
查询可能不起作用,但还有其他稍微有用的东西可以用。例如,如果我需要快速生成一个 UUID,我可以使用以下查询来实现:
aploetz@cqlsh:Whosebug> SELECT uuid() FROM system.local;
system.uuid()
--------------------------------------
a55c17f7-d19d-4531-85be-75551e3fd546
(1 rows)
这样做有两个原因:
SELECT 子句调用 uuid() 函数。
system.local table 只包含一行。如果你 运行 这个 SELECT 反对另一个 table,它会 return 与 CQL 行一样多的 UUID。
我发现了一种非常棘手的方法。
SELECT blobAsBigInt(bigintAsBlob(1)) AS c FROM table;
将为您提供值为 1 的常量列。如果您想自己尝试这一切,请确保
SELECT blobAsBigInt(bigintAsBlob(1)) AS c FROM table LIMIT 1;
否则你永远听不到它的结尾。