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

 更新时间:2015年05月04日 16:32:54   投稿:junjie  
这篇文章主要介绍了SQLite教程(六):表达式详解,本文讲解了常用表达式、条件表达式、转换表达式等内容,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

一、常用表达式:

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

相关文章

  • SQLite教程(八):命令行工具介绍

    SQLite教程(八):命令行工具介绍

    这篇文章主要介绍了SQLite教程(八):命令行工具介绍,本文罗列了所有内置命令,并对命令作用做了说明,然后给出了常用示例,需要的朋友可以参考下
    2015-05-05
  • SQLite3 API 编程手册

    SQLite3 API 编程手册

    Sqlite3 的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够。这些天再次研究它,又有一些收获,这里把我对 sqlite3 的研究列出来,以备忘记
    2013-12-12
  • SQLite优化方法

    SQLite优化方法

    SQLite的数据库本质上来讲就是一个磁盘上的文件,所以一切的数据库操作其实都会转化为对文件的操作,而频繁的文件操作将会是一个很好时的过程,会极大地影响数据库存取的速度。
    2008-09-09
  • SQLite教程(二):C/C++接口简介

    SQLite教程(二):C/C++接口简介

    这篇文章主要介绍了SQLite教程(二):C/C++接口简介,本文讲解了C/C++接口概述、核心对象和接口、参数绑定等内容,需要的朋友可以参考下
    2015-05-05
  • SQLite教程(十三):C语言编程实例代码(1)

    SQLite教程(十三):C语言编程实例代码(1)

    这篇文章主要介绍了SQLite教程(十三):C语言编程实例代码(1),本文讲解了获取表的Schema信息、动态创建表、删除该表、常规数据插入、创建测试数据表、删除测试表等内容,需要的朋友可以参考下
    2015-05-05
  • sqlite时间戳转时间语句(时间转时间戳)

    sqlite时间戳转时间语句(时间转时间戳)

    这篇文章主要介绍了sqlite时间戳转时间、时间转时间戳的方法,需要的朋友可以参考下
    2014-06-06
  • sqlite3 top的查询及limit语法介绍

    sqlite3 top的查询及limit语法介绍

    sqlite3中没有top的语法结构,不过相关的语法能实现跟top语法相同的功能,感兴趣的你可以参考下,希望可以帮助到你
    2013-02-02
  • SQLite教程(五):数据库和事务

    SQLite教程(五):数据库和事务

    这篇文章主要介绍了SQLite教程(五):数据库和事务,本文讲解了Attach数据库、Detach数据库、事务等内容,需要的朋友可以参考下
    2015-05-05
  • SQLite教程(四):内置函数

    SQLite教程(四):内置函数

    这篇文章主要介绍了SQLite教程(四):内置函数,本文讲解了聚合函数、核心函数、日期和时间函数、,需要的朋友可以参考下
    2015-05-05
  • VScode第三方插件打开sqlite数据库图文教程

    VScode第三方插件打开sqlite数据库图文教程

    在实际做一个项目的时候,为了提高效率我们会首选不重复造轮子,所以可能会用到第三方库,下面这篇文章主要给大家介绍了关于VScode第三方插件打开sqlite数据库的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-06-06

最新评论

?


http://www.vxiaotou.com