Sqlite
Sqlite 規格:4.2。比較之前的類型轉換
基於 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 親和性。
我想你可能會錯過這部分:
使用 CAST 運算符,即使轉換有損且不可逆,轉換也始終發生,而列親和性僅在更改是無損且可逆的情況下更改值的數據類型
(強調我的)。