SQLite教程(六):運算式詳解_SQLite

來源:互聯網
上載者:User

一、常用運算式:

    和大多數關係型資料庫一樣,SQLite能夠很好的支援SQL標準中提供的運算式,其函數也與SQL標準保持一致,如:

複製代碼 代碼如下:

    ||
    *    /    %
    +    -
    <<   >>   &    |
    <    <=   >    >=
    =    ==   !=   <>   IS   IS NOT   IN   LIKE
    AND  
    OR
    ~    NOT

    在上面的運算式中,唯一需要說明的是"||",該運算式主要用於兩個字串之間的串連,其傳回值為串連後的字串,即便該操作符兩邊的運算元為非字串類型,在執行該運算式之前都需要被提前轉換為字串類型,之後再進行串連。

二、條件運算式:

    該運算式的文法規則如下:
 

複製代碼 代碼如下:

    1). CASE x WHEN w1 THEN r1 WHEN w2 THEN r2 ELSE r3 END
    2). CASE WHEN x=w1 THEN r1 WHEN x=w2 THEN r2 ELSE r3 END
 

    對於第一種情況,條件運算式x只需計算一次,然後分別和WHEN關鍵字後的條件逐一進行比較,直到找到相等的條件,其比較規則等價於等號(=)運算式。如果找到匹配的條件,則返回其後THEN關鍵字所指向的值,如果沒有找到任何匹配,則返回ELSE關鍵字之後的值,如果不存在ELSE分支,則返回NULL。對於第二種情況,和第一種情況相比,唯一的差別就是運算式x可能被多次執行,比如第一個WHEN條件不匹配,則繼續計算後面的WHEN條件,其它規則均與第一種完全相同。最後需要說明的是,以上兩種形式的CASE運算式均遵守短路原則,即第一個運算式的條件一旦匹配,其後所有的WHEN運算式均不會再被執行或比較。

三、轉換運算式:

    該運算式的文法規則如下:
 

複製代碼 代碼如下:

    CAST(expr AS target_type)
 

    該運算式會將參數expr轉換為target_type類型,具體的轉換規則見如下列表:


目標類型 轉換規則描述
TEXT 如果轉換INTEGER或REAL類型的值到TEXT類型直接轉換即可,就像C/C++介面函數sqlite3_snprintf所完成的工作。
REAL 如果轉換TEXT類型的值到REAL類型,在該文本的最前部,將可以轉換為實數的文本轉換為相應的實數,其餘部分忽略。其中該文本值的前置字元為零亦將被全部忽略。如果該文本值沒有任何字元可以轉換為實數,CAST運算式的轉換結果為0.0。
INTEGER 如果轉換TEXT類型的值到INTEGER類型,在該文本的最前部,將可以轉換為整數的文本轉換為相應的整數,其餘部分忽略。其中該文本值的前置字元為零亦將被全部忽略。如果該文本值沒有任何字元可以轉換為整數,CAST運算式的轉換結果為0。
如果轉換將一個實數值轉換為INTEGER類型,則直接截斷實數小數部分。如果實數過大,則返回最大的負整數:-9223372036854775808。
NUMERIC   如果轉換文本值到NUMERIC類型,則先將該值強制轉換為REAL類型,只有在將REAL轉換為INTEGER不會導致資料資訊丟失以及完全可逆的情況下,SQLite才會進一步將其轉換為INTEGER類型。

    最後需要說明的是,如果expr為NULL,則轉換的結果也為NULL。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.