日期:2025 年 4 月 11 日。以下为 SQL 中内置函数的用法解析,涵盖数值、字符串和时间函数。
学习内容
数值函数
ROUND(number, decimals):四舍五入,指定小数位。TRUNCATE(number, decimals):截断至指定小数位,不四舍五入。CEILING(number)/CEIL(number):向上取整。FLOOR(number):向下取整。ABS(number):绝对值。RAND():生成 0 到


字符串函数
LENGTH(str):返回字符串长度。UPPER(str)/LOWER(str):转换大小写。LTRIM(str)/RTRIM(str)/TRIM(str):去除左侧、右侧或两侧空格。LEFT(str, n)/RIGHT(str, n):取左或右 n 个字符(含空格)。SUBSTRING(str, start, length):截取字符串,length可选。LOCATE(substr, str):返回子串首次出现位置(从 1 计数)。REPLACE(str, from_str, to_str):替换所有from_str为to_str。CONCAT(str1, str2, ...):连接字符串。CONCAT_WS(separator, str1, str2, ...):用分隔符连接,跳过NULL。





时间函数

常见的unit
NOW():当前日期时间。CURDATE():当前日期。CURTIME():当前时间。YEAR(date)/MONTH(date)/DAY(date)/HOUR(time)/MINUTE(time)/SECOND(time):提取对应部分。DAYNAME(date):星期名称。DAYOFMONTH(date):月内第几天。DAYOFWEEK(date):周内第几天(西方周日为 1,东方规则不同)。DAYOFYEAR(date):年内第几天。EXTRACT(unit FROM date):提取指定部分(如DAY、YEAR)

示例代码与讲解
1. 数值函数
SELECT ROUND(4.78);四舍五入到 5。
SELECT ROUND(4.987, 2);四舍五入到 4.99。
SELECT TRUNCATE(4.87235, 3);截断到 4.872。
SELECT CEILING(46.7);向上取整到 47。
SELECT FLOOR(46.7);向下取整到 46。
SELECT ABS(-92.3);返回 92.3。
SELECT RAND();生成 0 到
2. 字符串函数
SELECT LENGTH('STEPHEN');返回 7。
SELECT UPPER('shaun');转换为 'SHAUN'。
SELECT LOWER('LIVINGSTON');转换为 'livingston'。
SELECT LTRIM(' KLAY');去除左侧空格,返回 'KLAY'。
SELECT RTRIM('Green ');去除右侧空格,返回 'Green'。
SELECT TRIM(' ANDER IGUODALA ');去除两侧空格,返回 'ANDER IGUODALA'。
SELECT LEFT(' DANTE', 3);取左 3 字符,返回 ' DA'。
SELECT RIGHT(' DANTE', 3);取右 3 字符,返回 'NTE'。
SELECT SUBSTRING('JONATHON', 2, 5);从第 2 位截取 5 字符,返回 'ONATH'。
SELECT LOCATE('S', 'MOSES');返回 'S' 在 'MOSES' 中首次位置 3。
SELECT REPLACE('ABCDFEG', 'FE', 'EF');返回 'ABCDEFG'。
SELECT CONCAT(first_name, last_name)FROM customers;连接名字,无空格,如 'JohnSmith'。
SELECT CONCAT_WS(' ', first_name, last_name)FROM customers;用空格连接,返回 'John Smith'。
SELECT CONCAT(first_name, ' ', last_name)FROM customers;同上,灵活性较低。
3. 时间函数
SELECT NOW(), CURDATE(), CURTIME();示例输出:'2025-04-11 15:02:23', '2025-04-11', '15:02:23'。
SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW()), HOUR(NOW()), MINUTE(NOW()), SECOND(NOW());提取当前时间部分,如 2025, 4, 11, 15, 2, 23。
SELECT DAYNAME(NOW()), DAYOFMONTH(NOW()), DAYOFWEEK(NOW()), DAYOFYEAR(NOW());返回星期名、月内天、周内天(西方周日为 1)、年内天。 注意: DAYOFWEEK西方规则与东方不同。
SELECT EXTRACT(DAY FROM NOW());提取当前日期的天,如 11。
作业
1. 时间函数
SELECT *FROM ordersWHERE EXTRACT(YEAR FROM order_date) = YEAR(NOW());筛选当前年份(2025)的订单。
总结
本次解析了数值函数(ROUND、TRUNCATE 等)、字符串函数(CONCAT_WS、TRIM 等)和时间函数(NOW、EXTRACT 等)。基于 sql_store 数据库。后续将探讨条件逻辑与格式化。

