gpt4 book ai didi

cassandra - 是否可以在 CQL 语句的 WHERE 子句中表达不等式?

转载 作者:行者123 更新时间:2023-12-02 17:57:40 24 4
gpt4 key购买 nike

我想选择值不是 NAN 的东西。怎么做?我尝试了不同的选择:

WHERE value != NAN
WHERE value is not NAN
WHERE value == value

这些尝试都没有成功。

我发现可以编写WHERE value = NAN,但是有没有办法表达不平等?

最佳答案

正如您所指出的,您今天尝试过的替代方案均无效:

  1. 虽然解析器可以识别 != 运算符,但遗憾的是 WHERE 子句不支持它。 Cassandra 和 Scylla 都是如此。我打开https://github.com/scylladb/scylladb/issues/12736作为 Scylla 中的功能请求,添加对 != 的支持。

  2. IS NOT ... 语法不相关 - 它仅以特定方式 IS NOT NULL 受支持,甚至在哪里(参见 https://github.com/scylladb/scylladb/issues/8517 )。

  3. WHERE value = value(注意单个等号是 SQL 和 CQL 语法,而不是 C 中的 '=='),目前不支持,您只能检查将一列设置为常量,不检查两列是否相等。对于 Cassandra 和 Scylla 来说也是如此。 Scylla 目前正在改进 WHERE 表达式的功能,在此过程结束时,将支持此类表达式。

我认为今天最好的解决方案就是在客户端读取所有数据,并自己过滤掉 NaN。性能损失应该是最小的 - 只是网络开销 - 因为即使 Scylla 为您执行此过滤,它仍然需要从磁盘读取数据并执行此过滤 - 它不像它可以“免费”获得此不等式检查。这与相等检查 (WHERE value = 3) 不同,Scylla 可以直接跳转到 value = 3 的位置(如果“value”是分区键或聚类键) )并只读该内容。这种效率问题是历史上 Scylla 和 Cassandra 支持相等运算符而不是不等运算符的原因。

关于cassandra - 是否可以在 CQL 语句的 WHERE 子句中表达不等式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75345877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com