《SQL 基础教程》第六章:函数、谓词、CASE 表达式
函数是 SQL 中的一部分.在 SQL 中,除了普通的函数之外,还有特殊的函数(谓词和 CASE 表达式)用于各种情况.
函数
函数的种类有:
- 算术函数
- 字符串函数
- 日期函数
- 转换函数(用于转换数据类型)
- 聚合函数
算术函数
例如;
- MOD:求余
- ABS:求绝对值
- ROUND:四舍五入
字符串函数
例如:
- 拼接: || 函数
- 求字符串长度: LENGTH
- 大小写转换:LOWER ,UPPER
- 替换字符串:REPLACE(对象字符串,对象字符串中要替换的字符串,替换成的字符串)
日期函数
例如:
- 得到当前日期:CURRENT_DATE
- 得到当前时间(时分秒):CURRENT_TIME
- 得到当前的日期和时间: CURRENT_TIMESTAMP
- 截取日期元素:EXTRACT(YEAR FROM CURRENT_TIMESTAMP)
转换函数
1.CAST 函数
格式:
CAST(转换前的值 AS 想要转换成的数据类型)
范例:
CAST('0001' AS INTEGER)
2.COALESCE 函数
格式:
COALESCE(num1, num2, num3, num4,...)
功能:
返回从左侧起第一额不是 NULL 的值.
Predicate 谓词
是进行判断的函数,该函数的返回值有两种:真和假.典型的谓词,例如: =,>,<等比较运算符就是比较谓词.
LIKE 谓词——模式匹配
格式:
SELECT *
FROM SampleLIke
WHERE strcol LIKE 'ddd%'
功能:
查找特定文本模式的字符串,可用的符号有:
- %:代表任意字符串
- _:代表任意一个字符
BETWEEN 谓词——范围查询
格式:
SELECT product_name, sale_price
FROM Product
WHERE sale_price BETWEEN 100 AND 1000
功能:
判断数据是否在某一区间范围内
IS NULL, IS NOT NULL ——判断是否为 NULL
IN 谓词——判断 OR 类型的数据
格式:
SELECT product_name, purchase_price
FROM Product
WHERE purchase_price IN (320, 500, 5000);
功能:
取出符合 OR 语句要求的数据
IN 谓词与子查询
子查询可以与 IN 谓词配合起来,从而实现动态的查询,编写出更加易维护的程序,例如:
用于查询shop_id 为 '000C'所含的商品.
SELECT product_name, sale_price
FROM Product
WHERE product_id IN (SELECT product_id
FROM ShopProduct
WHERE shop_id = '000C');
EXIST 谓词——判断是否存在满足条件的记录
范例:
查找 P 表和 SP 表中 shop_id 相同的数据:
SELECT product_name, sale_price
FROM Product AS P
WHERE EXIST (SElECT *
FROM ShopProduct AS SP
WHERE SP.shop.id = P.product_id);
格式:
其中的 SELECT * 是 SQL 的一种惯例.
EXIST 只关心是否有匹配的数据,因此 SELECT * 改为 SELECT 1 的时候结果也不会发生变化.
功能:
EXISTS 谓词常常与关联子查询配合而进行查询,返回满足条件的记录.
CASE 表达式
CASE 表达式分为简单 CASE 表达式与搜索 CASE 表达式,其区别是:
- 简单 CASE 表达式最初的 "CASE
<colname>
“会作为谓词的左边的对象. - 搜索 CASE 表达式无此限制,因此可以使用多种判断的条件
「简单 CASA 表达式」格式:
CASE <表达式>
WHEN <含谓词的表达式>
THEN <表达式>
WHEN <含谓词的表达式>
THEN <表达式>
WHEN <含谓词的表达式>
THEN <表达式>
...
ELSE <表达式>
END
「搜索 CASA 表达式」格式:
CASE WHEN <含谓词的表达式>
THEN <表达式>
WHEN <含谓词的表达式>
THEN <表达式>
WHEN <含谓词的表达式>
THEN <表达式>
...
ELSE <表达式>
END
其中第一个表达式是包含谓词的表达式,其返回 TURE/FALSE/UNKNOWN),
第二个表达式是第一个表达式为 TRUE 的时候,执行的语句.
「搜索 CASA 表达式」语法:
CASE 表达式顺序执行语句,如果表达式返回 TRUE, 则执行 THEN 后的语句,然后 CASE 表达式的执行到此为止.
如果不为 TRUE, 则执行下面的 WHEN 语句
当所有 WHEN 语句执行完(都不为 TRUE)后,执行 ELSE 语句,然后 CASE 表达式的执行到此为止.
ELSE 语句是可选的, 默认情况下为 ELSE NULL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具