it编程 > 数据库 > Sqlite

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

54人参与 2024-05-15 Sqlite

一、常用表达式:

    和大多数关系型数据库一样,sqlite能够很好的支持sql标准中提供的表达式,其函数也与sql标准保持一致,如:

    在上面的表达式中,唯一需要说明的是"||",该表达式主要用于两个字符串之间的连接,其返回值为连接后的字符串,即便该操作符两边的操作数为非字符串类型,在执行该表达式之前都需要被提前转换为字符串类型,之后再进行连接。

二、条件表达式:

    该表达式的语法规则如下:
 
    对于第一种情况,条件表达式x只需计算一次,然后分别和when关键字后的条件逐一进行比较,直到找到相等的条件,其比较规则等价于等号(=)表达式。如果找到匹配的条件,则返回其后then关键字所指向的值,如果没有找到任何匹配,则返回else关键字之后的值,如果不存在else分支,则返回null。对于第二种情况,和第一种情况相比,唯一的差别就是表达式x可能被多次执行,比如第一个when条件不匹配,则继续计算后面的when条件,其它规则均与第一种完全相同。最后需要说明的是,以上两种形式的case表达式均遵守短路原则,即第一个表达式的条件一旦匹配,其后所有的when表达式均不会再被执行或比较。

三、转换表达式:

    该表达式的语法规则如下:
 
    该表达式会将参数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。

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

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

05-15

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

05-15

SQLite教程(九):在线备份

05-15

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

05-15

SQLite教程(十):内存数据库和临时数据库

05-15

SQLite教程(四):内置函数

05-15

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论