SQLite 資料類型總結

來源:互聯網
上載者:User

標籤:

SQLite 資料類型總結

 

1。嚴格地說,SQLite 沒有資料類型。SQLite 使用動態資料類型,即:資料的類型取決於資料本身,而不是它的容器(欄位)

 

2。儲存類型(Storage Class):資料儲存到檔案後的表現形式。包括:

  • NULL - 空值
  • INTERGER - 有符號整數類型
  • REAL - 浮點數類型
  • TEXT - 字串(其編碼取決於DB的編碼)
  • BLOB - 二進位表示

3。親和類型(Type Affinity):資料表的列中的資料對Storage Class的傾向性

  •  TEXT
  • NUMERIC
  • INTEGER
  • REAL
  • NONE

4。宣告類型(Declared Type):CREATE TABLE/ALTER TABLE 語句中聲明的列的類型

Declared Type、Type Affinity、Storage Class 之間的關係:

 Declared Type  Type Affinity  Storage Class(按優先順序)
INT  INTERGER  (同NUMERIC)
CHAR
TEXT
 TEXT  TEXT/NULL/BLOB
BLOB
(不指定)
 NONE  (As is)
REAL
FLOAT
DOUBLE
 REAL  (同NUMERIC)
(其它)  NUMERIC  INTEGER/REAL/TEXT/NULL/BLOB

 例外:

(1)BLOB 資料始終儲存為 BLOB 的 Storage Class

 

5。資料的比較。比較操作符(=,>,>=...)、IN、Sort by等,按照以下5個步驟比較左右運算元:

  • Step 1:根據下列規則確定左右運算元的 Type Affinity:
  1. 列名運算式 - 該列的 Affinity(見前面第4節表格第2列)
  2. CAST ... AS ... - 所指定的 Affinity(見前面第4節表格第2列)
  3. 其他情況 - NONE Affinity
  • Step 2:Type Affinity 轉換。如果左、右運算元都是下列 3 種 Type Affinity 之一,則按照下列優先順序,將低優先順序的轉換為高優先順序的:
  1. 數值類(INTEGER/REAL/NUMERIC)
  2. TEXT
  3. NONE
  • Step 3:由 Type Affinity 及資料的實際類型,確定其 Storage Class(見前面第4節表格第3列)

 

  • Step 4:如果左、右運算元屬於不同的 Storage Class,則按照以下順序(由小到大)確定比較結果:
  1. NULL
  2. 數值類(INTEGER/REAL)
  3. TEXT
  4. BLOB
  • Step 5:如果左、右運算元屬於相同的 Storage Class,則根據以下規則進行比較
    1. NULL - 左值始終小於右值
    2. 數值類(INTEGER/REAL)- 按數值比較
    3. TEXT - 逐字元比較
    4. BLOB - 用 memcmp() 函數比較

SQLite 資料類型總結

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.