基于 Sqlite 文档:https://www.sqlite.org/datatype3.html#type_conversions_prior_to_comparison,尤其是这个语句:
如果一个操作数具有 INTEGER、REAL 或 NUMERIC 亲和性,而另一个操作数具有 TEXT 或 BLOB 或没有亲和性,则将 NUMERIC 亲和性应用于其他操作数。
我期望以下查询:
CREATE TABLE t (id integer primary key, str varchar(20));
INSERT INTO t (id, str) VALUES (1, '5'), (2, '5u');
SELECT id, 5 = str, 5 >= str, CAST(5 AS NUMERIC) >= str, CAST(str AS NUMERIC) FROM t;
为两行返回5 >= str
= 1
,因为左侧操作数具有 NUMERIC 亲和性。
我想你可能会错过这部分:
(强调我的)。