CrateDB语句在AND比较期间返回意外结果



我有一个这样的查询

SELECT "deviceId", "transactionStatus" 
FROM scp_service_transaction.transactions_v2 
WHERE "tenantId" = 'aptos-denim' 
AND TRY_CAST("deviceId" AS BIGINT) >= 100 
AND TRY_CAST("deviceId" AS BIGINT) <= 150  
ORDER BY "endDateTime" desc LIMIT 20 OFFSET 0;

我的数据集看起来像这个

[
{deviceId: 123, transactionStatus: object }, 
{deviceId: 1015, transactionStatus: object }
]

我得到的查询返回值为1231015的deviceId,而我希望只返回123。当我指定了我希望我的设备ID所在的范围时,为什么我的查询同时返回123和1015?

我假设deviceId是一个TEXT字段。

CrateDB 4.7.1/4.6.8修复了一个错误,该错误在使用显式铸造时应用了交换铸造优化。这会导致忽略作为文本比较的强制转换和文本。

这两个版本都可以在测试渠道上获得,很可能在下周内稳定升级。

https://github.com/crate/crate/issues/12135

最新更新