Cassandra 查询字符串长度

Are*_*res 5 cql string-length cassandra

如何在 Cassandra 中获取字符串的长度?似乎没有任何内置函数可以为我执行此操作。

寻找这样的东西:

SELECT size(myStr) FROM myTable WHERE ...
Run Code Online (Sandbox Code Playgroud)

我知道这可以使用用户定义的函数实现,但我不确定我是否具有创建函数的适当权限。

vin*_*dev 5

它没有内置函数,但您可以UDF在 Cassandra 中创建以查找 String 列的长度,然后UDF在查询中使用它。在创建此 UDF 之前,请确保您已在cassandra.yml文件中启用 udf 属性,即enable_user_defined_functions: true

CREATE FUNCTION IF NOT EXISTS len (input text) 
   CALLED ON NULL INPUT 
   RETURNS int 
   LANGUAGE java AS '
   return input.length();';
Run Code Online (Sandbox Code Playgroud)

然后您可以在查询中使用它,

cqlsh:test> SELECT len(event_data) as length from event where id = 1;
Run Code Online (Sandbox Code Playgroud)

你应该得到输出,

 length
--------
     14
Run Code Online (Sandbox Code Playgroud)