標籤:
sqlite 的比較等運算是根據不同的值而不同的,並不是根據的欄位類型,因為 sqlite 是弱類型欄位 --------------------------------------------------http://www.sqlite.com.cn/MySqlite/5/127.Html 在SQLite3.0版中,值被定義為什麼類型只和值自身有關,和列沒有關係,和變數也沒有關係. (這有時被稱作 弱類型.)所有其它的我們所使用的資料庫引擎都受靜態類型系統的限制,其中的所有值的類是由其所屬列的屬性決定的,而和值無關. 為了最大限度的增加SQLite資料庫和其他資料庫的相容性,SQLite支援列的"類型親和性". 列的親和性是為該列所儲存的資料建議一個類型.我們要注意是建議而不是強迫.在理論上來講,任何列依然是可以儲存任何類型的資料的. 只是針對某些列,如果給建議類型的話,資料庫將按所建議的類型儲存.這個被優先使用的資料類型則被稱為"親和類型". --------------------------------------------------When grouping values with the 當用GROUP BY子句給值分組時,具有不同儲存類型的值被認為是不同的, 但也有例外, 比如,一個整數值和一個實數值從數字角度來說是相等的,那麼它們則是相等的.用GROUP by 子句比較完後,值不具有任何親和性. --------------------------------------------------要特別注意的是 sqlite 文檔講解到的 “BLOB文本是以“x”或“X”開頭的含有十六進位文本資訊的文本值。例如: X‘53514697465‘ ”即"BLOB literals are string literals containing hexadecimal data and preceded by a single "x" or "X" character. For example: X‘53514C697465‘ " 這裡寫入的是二進位內容, 這樣寫入的字串是不能用 "=" 選擇出來的,例如 insert into appzfdata(id) values(x‘3131‘)insert into appzfdata(id) values(‘11‘) 如果用語句選擇 select * from appzfdata where id = ‘11‘ 是選擇不出來第一條的(不論建立表時 id 用什麼類型的欄位).但是你用管理工具軟體去看去發現兩條記錄的 id 值都是 "11" 如果不明就裡,你一定會非常抓狂.我覺得這是個非常嚴重的問題,我怎麼知道裡面存的是什麼類型的資料? 用 like 代替 "=" 號則可以取出來. /*
select length(id),x‘31‘ t,* from appzfdata --where id like "1"
--and t = x‘31‘
where id = x‘313100‘ or id = ‘11‘ --select (‘aaa‘ ||id) ||‘aaa‘, * from appzfprice where [appname] like‘i1‘ select length ( appname ), * from appzfprice where [appname] like ‘i1‘ */
select * from t2 where id = ‘1‘
http://www.cnblogs.com/-clq/p/3326407.html
sqlite 的比較等運算是根據不同的值而不同的,並不是根據的欄位類型,因為 sqlite 是弱類型欄位