一、常用表达式:

和大多数关系型数据库一样,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学习手册(表达式)相关推荐

  1. SQLite学习手册(目录)

    在实际的应用中,SQLite作为目前最为流行的开源嵌入式关系型数据库,在系统的架构设计中正在扮演着越来越为重要的角色.和很多其它嵌入式NoSQL数据库不同的是,SQLite支持很多关系型数据库的基本特 ...

  2. 学习Stephen Liu的《SQLite学习手册(数据表和视图)》(一)

    好好学习,day day up.不能再玩了,学习要紧 以下内容主要基于对于Stephen Liu的博文SQLite学习手册(数据表和视图)的学习. 零.准备工作 先把sqlite3.exe的路径添加到 ...

  3. SQLite学习手册(命令行工具)

    工欲善其事,必先利其器.学好SQLite的命令行工具,对于我们学习SQLite本身而言是非常非常有帮助的.最基本的一条就是,它让我们学习SQLite的过程更加轻松愉快.言归正传吧,在SQLite的官方 ...

  4. SQLite学习手册(数据类型)

    一.存储种类和数据类型: SQLite将数据值的存储划分为以下几种存储类型:      NULL: 表示该值为NULL值.      INTEGER: 无符号整型值.      REAL: 浮点值. ...

  5. SQLite学习手册(实例代码二)

    三.高效的批量数据插入: 在给出操作步骤之前先简单说明一下批量插入的概念,以帮助大家阅读其后的示例代码.事实上,批量插入并不是什么新的概念,在其它关系型数据库的C接口API中都提供了一定的支持,只是接 ...

  6. SQLite学习手册(实例代码一)

    一.获取表的Schema信息: 1). 动态创建表.     2). 根据sqlite3提供的API,获取表字段的信息,如字段数量以及每个字段的类型.     3). 删除该表.     见以下代码及 ...

  7. SQLite学习手册(锁和并发控制)

    一.概述: 在SQLite中,锁和并发控制机制都是由pager_module模块负责处理的,如ACID(Atomic, Consistent, Isolated, and Durable).在含有数据 ...

  8. SQLite学习手册(临时文件)

    一.简介: 尽管SQLite的数据库是由单一文件构成,然而事实上在SQLite运行时却存在着一些隐含的临时文件,这些临时文件是出于不同的目的而存在的,对于开发者而言,它们是透明的,因此在开发的过程中我 ...

  9. SQLite学习手册(内存数据库)

    一.内存数据库: 在SQLite中,数据库通常是存储在磁盘文件中的.然而在有些情况下,我们可以让数据库始终驻留在内存中.最常用的一种方式是在调用sqlite3_open()的时候,数据库文件名参数传递 ...

最新文章

  1. centos 6.5 配置LDAP服务器+客户端!
  2. 用CRF做命名实体识别——NER系列(三)
  3. c语言 百钱买百鸡问题
  4. eclipse扩展点_Eclipse扩展点评估变得容易
  5. excel导航窗格_Excel小技巧16:在每天的某个时刻自动打开特定工作簿
  6. (pytorch-深度学习系列)CNN二维卷积层-学习笔记
  7. pcb钻孔披锋改善报告_高速高频PCB技术 || 玻纤效应对高速信号的影响
  8. Java jar 版本 查看
  9. C++中的.和::和:和-的区别
  10. maven不引入parent_Maven从入门到放弃
  11. Web开发HTTP中URI和URL的情感纠葛
  12. Kubesploit:针对容器化环境的跨平台后渗透利用工具
  13. Qt5中this application has requested the runtime to terminate it in an unusual way 无法运行问题的解决
  14. 打印预览和实际的打印不一致问题
  15. 键盘按键的各种编码对照表
  16. 社交网络分析算法(SNA)
  17. Linux指令系统文件复制到U盘
  18. java我的世界教学视频,快来看鸭~
  19. Redis安全注意事项
  20. 如何将JPG格式图片转换成BMP格式

热门文章

  1. html js css倒计时,js+css3倒计时动画特效
  2. php插件 pycharm_原来Pycharm中有这么多好用的插件|Pycharm精选插件
  3. keil写文字怎么会乱码_朋友圈发婚纱照配文字怎么写?
  4. 2021-01-16 英文写作中“因为”
  5. 记一次LVM修复过程
  6. 网络安全技术文章征稿启事
  7. Python当中的a += a 与 a = a + a 的区别,可变类型与不可变类型的数据类型,引用传参...
  8. 初接触php,遇到一个低级问题
  9. UVa 10082 - WERTYU 解题报告 - C语言
  10. Ocr技术 识别高级验证码