SQL基础学习笔记--5--函数、谓词

这篇博客详细介绍了SQL中的各种函数,包括算数、字符串、日期和转换函数,并探讨了不同类型的谓词,如LIKE、BETWEEN、IS NULL、IN和EXISTS,以及它们在查询中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5.1 各种各样的函数

 

函数分类

算数函数 字符串函数 日期函数 转化函数 聚合函数

 

算数函数

+(加法)

-(减法)

*(乘法)

/(除法)

ABS (绝对值) 参数:需要取绝对值的数值

SELECT ABS(sale_price) FROM product WHERE product_name = '擦菜板'

MOD(求余) 参数:被除数,除数

SELECT MOD(sale_price,purchase_price) FROM product WHERE product_name = '擦菜板'

ROUND(四舍五入) 参数:对象数值,需要保留的位数

SELECT ROUND((sale_price/purchase_price),5) FROM product WHERE product_name = '擦菜板'

 

字符串函数

 

字符串拼接 关键字:CONCAT 参数:需要拼接的字符串

SELECT CONCAT(product_type, product_name) FROM product WHERE product_id = 8

字符串长度(字符) 关键字:LENGTH 参数:字符串

SELECT product_name, LENGTH(product_name) FROM product WHERE product_id = 8

大写转小写 关键字:LOWER 参数:字符串

同理 小写转大写UPPER

SELECT LOWER(product_name) FROM product WHERE product_id = 8

字符串替换 关键字:REPLACE 参数:对象字符串、替换前字符串、替换后字符串

SELECT REPLACE (product_type, '公', '母') FROM product WHERE product_id = 8

字符串截取 关键字:SUBSTR(SUBSTRING)参数:对象字符串、截取的起始位置,截取长度

SELECT SUBSTRING(product_type FROM 2 FOR 3 ) FROM product WHERE product_id = 8

 

日期函数

 

获取日期

SELECT CURRENT_DATE ();

获取时间

SELECT CURRENT_TIME ();

获取日期和时间

SELECT CURRENT_TIMESTAMP (); -- 或者 SELECT NOW();

截取日期或时间

SELECT NOW(), EXTRACT(YEAR FROM NOW()), EXTRACT(MONTH FROM NOW()), EXTRACT(DAY FROM NOW()), EXTRACT(HOUR FROM NOW()), EXTRACT(MINUTE FROM NOW()), EXTRACT(SECOND FROM NOW());

 

转换函数

 

字符串转数值 关键字:CAST (<字符串> AS signed INTEGER)

SELECT CAST( product_type AS signed INTEGER ) FROM product WHERE product_id = 6

字符串转日期 关键字:CAST (<字符串> AS date)

SELECT CAST(product_type AS date) FROM product WHERE product_id = 6

NULL值转换为其他值 关键字:COALESCE (可能为NULL的列 ,要填充的值)

SELECT COALESCE (sale_price, 200) FROM product

 

5.2 谓词

 

谓词与函数的区别

函数的返回值可能为数字、日期、字符串等,而谓词的返回值全部是真值(TRUE/FALSE/UNKNOWN)

 

主要的谓词

LIKE

BETWEEN

IS NULL、IS NOT NULL

IN

EXISTS

LIKE谓词--模糊查询

SELECT * FROM product WHERE product_type LIKE '%公%'

BETWEEN谓词--范围查询

BETWEEN包含临界值

SELECT * FROM product WHERE purchase_price BETWEEN 1000 AND 6000

IS NULL、IS NOT NULL判断是否为NULL

SELECT * FROM product WHERE purchase_price IS NULL

 

IN谓词--OR的简便用法

SELECT * FROM product WHERE purchase_price IN (500, 2800, 5000)

子查询作为IN谓词的参数

NOT IN 同理

SELECT * FROM product WHERE purchase_price IN ( SELECT purchase_price FROM product )

EXIST谓词--是否存在

通常以一个子查询作为参数

NOT EXIST同理

SELECT * FROM product WHERE EXISTS ( SELECT * FROM product WHERE sale_price >= 200 )

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值