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。
SQLite学习手册(表达式)相关推荐
- SQLite学习手册(目录)
在实际的应用中,SQLite作为目前最为流行的开源嵌入式关系型数据库,在系统的架构设计中正在扮演着越来越为重要的角色.和很多其它嵌入式NoSQL数据库不同的是,SQLite支持很多关系型数据库的基本特 ...
- 学习Stephen Liu的《SQLite学习手册(数据表和视图)》(一)
好好学习,day day up.不能再玩了,学习要紧 以下内容主要基于对于Stephen Liu的博文SQLite学习手册(数据表和视图)的学习. 零.准备工作 先把sqlite3.exe的路径添加到 ...
- SQLite学习手册(命令行工具)
工欲善其事,必先利其器.学好SQLite的命令行工具,对于我们学习SQLite本身而言是非常非常有帮助的.最基本的一条就是,它让我们学习SQLite的过程更加轻松愉快.言归正传吧,在SQLite的官方 ...
- SQLite学习手册(数据类型)
一.存储种类和数据类型: SQLite将数据值的存储划分为以下几种存储类型: NULL: 表示该值为NULL值. INTEGER: 无符号整型值. REAL: 浮点值. ...
- SQLite学习手册(实例代码二)
三.高效的批量数据插入: 在给出操作步骤之前先简单说明一下批量插入的概念,以帮助大家阅读其后的示例代码.事实上,批量插入并不是什么新的概念,在其它关系型数据库的C接口API中都提供了一定的支持,只是接 ...
- SQLite学习手册(实例代码一)
一.获取表的Schema信息: 1). 动态创建表. 2). 根据sqlite3提供的API,获取表字段的信息,如字段数量以及每个字段的类型. 3). 删除该表. 见以下代码及 ...
- SQLite学习手册(锁和并发控制)
一.概述: 在SQLite中,锁和并发控制机制都是由pager_module模块负责处理的,如ACID(Atomic, Consistent, Isolated, and Durable).在含有数据 ...
- SQLite学习手册(临时文件)
一.简介: 尽管SQLite的数据库是由单一文件构成,然而事实上在SQLite运行时却存在着一些隐含的临时文件,这些临时文件是出于不同的目的而存在的,对于开发者而言,它们是透明的,因此在开发的过程中我 ...
- SQLite学习手册(内存数据库)
一.内存数据库: 在SQLite中,数据库通常是存储在磁盘文件中的.然而在有些情况下,我们可以让数据库始终驻留在内存中.最常用的一种方式是在调用sqlite3_open()的时候,数据库文件名参数传递 ...
最新文章
- centos 6.5 配置LDAP服务器+客户端!
- 用CRF做命名实体识别——NER系列(三)
- c语言 百钱买百鸡问题
- eclipse扩展点_Eclipse扩展点评估变得容易
- excel导航窗格_Excel小技巧16:在每天的某个时刻自动打开特定工作簿
- (pytorch-深度学习系列)CNN二维卷积层-学习笔记
- pcb钻孔披锋改善报告_高速高频PCB技术 || 玻纤效应对高速信号的影响
- Java jar 版本 查看
- C++中的.和::和:和-的区别
- maven不引入parent_Maven从入门到放弃
- Web开发HTTP中URI和URL的情感纠葛
- Kubesploit:针对容器化环境的跨平台后渗透利用工具
- Qt5中this application has requested the runtime to terminate it in an unusual way 无法运行问题的解决
- 打印预览和实际的打印不一致问题
- 键盘按键的各种编码对照表
- 社交网络分析算法(SNA)
- Linux指令系统文件复制到U盘
- java我的世界教学视频,快来看鸭~
- Redis安全注意事项
- 如何将JPG格式图片转换成BMP格式
热门文章
- html js css倒计时,js+css3倒计时动画特效
- php插件 pycharm_原来Pycharm中有这么多好用的插件|Pycharm精选插件
- keil写文字怎么会乱码_朋友圈发婚纱照配文字怎么写?
- 2021-01-16 英文写作中“因为”
- 记一次LVM修复过程
- 网络安全技术文章征稿启事
- Python当中的a += a 与 a = a + a 的区别,可变类型与不可变类型的数据类型,引用传参...
- 初接触php,遇到一个低级问题
- UVa 10082 - WERTYU 解题报告 - C语言
- Ocr技术 识别高级验证码