SQLite教程(六):表达式详解

 更新时间:2015年05月04日 16:32:54   投稿:junjie  
这篇文章主要介绍了SQLite教程(六):表达式详解,本文讲解了常用表达式、条件表达式、转换表达式等内容,需要的朋友可以参考下

一、常用表达式:

    和大多数关系型数据库一样,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。

相关文章

  • CentOS下更新SQLite版本

    CentOS下更新SQLite版本

    SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。这篇文章主要介绍了CentOS下更新SQLite版本,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-12-12
  • SQLite中的WAL机制详细介绍

    SQLite中的WAL机制详细介绍

    这篇文章主要介绍了SQLite中的WAL机制详细介绍,本文讲解了什么是WAL、WAL如何工作、WAL的优点与缺点、WAL引入的兼容性问题、WAL引入的性能问题等内容,需要的朋友可以参考下
    2015-01-01
  • Win11下基于VS2022编译SQLite3源码的实现步骤

    Win11下基于VS2022编译SQLite3源码的实现步骤

    本文主要介绍了Win11下基于VS2022编译SQLite3源码的实现步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09
  • SQLite教程(五):索引和数据分析/清理

    SQLite教程(五):索引和数据分析/清理

    这篇文章主要介绍了SQLite教程(五):索引和数据分析/清理,本文讲解了创建索引、删除索引、重建索引、数据分析、数据清理等内容,需要的朋友可以参考下
    2015-05-05
  • sqlite循环批量插入数据采用批处理文件实现

    sqlite循环批量插入数据采用批处理文件实现

    需要在sqlite数据库中插入大量测试数据,需要通过一个批处理文件来循环调用插入sqlite语句,感兴趣的朋友可以参考下哈,希望可以帮助到你
    2013-04-04
  • python之sqlalchemy创建表的实例详解

    python之sqlalchemy创建表的实例详解

    这篇文章主要介绍了数据库之sqlalchemy创建表的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握理解这部分内容,需要的朋友可以参考下
    2017-10-10
  • SQLite教程(十一):临时文件

    SQLite教程(十一):临时文件

    这篇文章主要介绍了SQLite教程(十一):临时文件,本文讲解了七种临时文件并对它们一一具体说明,并相关的编译时参数和指令、其它优化策略等内容,需要的朋友可以参考下
    2015-05-05
  • SQLite字符串比较时的大小写问题解决方法

    SQLite字符串比较时的大小写问题解决方法

    这篇文章主要介绍了SQLite字符串比较时的大小写问题解决方法,本文总结了比较字符串时的大小写问题的3种解决方案,需要的朋友可以参考下
    2015-03-03
  • SQLite3中的日期时间函数使用小结

    SQLite3中的日期时间函数使用小结

    这篇文章主要介绍了SQLite3中的日期时间函数使用小结,同时介绍了一些SQLite数据库的基本知识,需要的朋友可以参考下
    2014-05-05
  • SQLITE3 使用总结

    SQLITE3 使用总结

    Sqlite3 的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够。这些天再次研究它,又有一些收获,这里把我对 sqlite3 的研究列出来,以备忘记。也希望能对大家有所帮助。
    2014-08-08

最新评论