CQL语句WHERE子句能否表达不等式?如何筛选非NAN值?
CQL筛选非NaN值的正确方法
关于CQL中NaN的比较逻辑
CQL里的NaN(非数字)遵循IEEE 754标准的比较规则,这导致常规的不等判断逻辑对它不生效:
- 你试过的
WHERE value != NAN、WHERE value is not NAN都无效,因为NaN和任何值的不等比较都不会返回预期的true - 但
WHERE value = NAN能匹配NaN值,这是CQL针对NaN做的特殊处理
筛选非NaN值的正确写法
有两种可靠的方式:
- 否定匹配NaN的条件:
直接反向匹配所有不是NaN的数据,这是最直观也最可靠的写法。WHERE NOT (value = NAN) - 利用自身相等判断:
你之前的WHERE value == value失败是因为用了双等号,CQL里的相等判断是单=,改成下面的写法就能生效:
原理是:只有非NaN的数值才会满足自身等于自身,NaN的WHERE value = valuevalue = value会返回false,从而被排除。
关于CQL的WHERE子句不等式支持
CQL的WHERE子句完全支持常规的不等式操作,比如>、<、!=、>=、<=这些都能正常使用,只是针对NaN这种特殊值,常规的不等逻辑不适用,必须用上面的特殊写法来处理。
内容的提问来源于stack exchange,提问作者Vadim
相关产品推荐
相关产品推荐

