SQL知识合集(二):函数篇
TRIM
作用:去掉字符串前后的空格
SELECT *
FROM your_table_name
WHERE TRIM(column_name) = '';
COALESCE
作用:返回其参数中的第一个非 NULL 值。它可以接受多个参数,并从左到右依次评估这些参数,直到找到第一个非 NULL 的值并返回。如果所有参数都是 NULL,则返回 NULL。
SELECT COALESCE(column1, column2, 'default_value') AS result
FROM your_table_name;
解释:COALESCE 将返回 column1 的值,如果 column1 是 NULL,则返回 column2 的值,如果 column2 也是 NULL,则返回 'default_value'。
NULLIF
作用:如果字段A等于{M}则该字段设置为空
SELECT
COALESCE(NULLIF(urls, 'a'),avatar,'nonono' ) a
FROMlspace_diga.off_user
CURDATE()
作用:返回当天的日期(不包含时间)
DATEDIFF
作用:计算两个日期之间的天数 CURDATE()大,2000-05-04小
SELECTDATEDIFF(CURDATE(),'2000-05-04')
答案:8961
CONCAT_WS
作用:拼接字符串,如果该字段为空的话直接跳过,不会拼接
SELECTCONCAT_WS(',', NULLIF(urls, ''), age, avatar) AS concatenated_result
FROMlspace_diga.off_user;
IFNULL
作用:判断是否为空
select IFNULL('ok','default') //ok
select IFNULL(null,'default') //default
wm_contact
作用:函数返回一个字符串结果,该结果由分组中的值连接组合而成。
-- 查询一个课程包含那些题
SELECT c.id,GROUP_CONCAT(t.title) from course c left JOIN topical t ON t.course_id=c.id GROUP BY c.id
DATE_FORMAT()
作用:格式化日期
DATE_FORMAT(NOW(),'%Y-%m-%d') 2023-09-09
EXTRACT()
作用:函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
SELECT EXTRACT(YEAR FROM OrderDate) AS OrderYear,
EXTRACT(MONTH FROM OrderDate) AS OrderMonth,
EXTRACT(DAY FROM OrderDate) AS OrderDay
FROM Orders
WHERE OrderId=1
ANY_VALUE
作用:ANY_VALUE(sale_date) AS any_sale_date
:返回每组中任意一个 sale_date
SELECT product_id,SUM(quantity) AS total_quantity,ANY_VALUE(sale_date) AS any_sale_date
FROM sales
GROUP BY product_id;
NOT EXISTS()
作用:查询不存在的集合中的记录
SELECT *
FROM departments
WHERE EXISTS (SELECT 1FROM employeesWHERE departments.department_id = employees.department_idAND employees.employee_id = 123
);
ROUND()
作用:将数值表达式四舍五入到指定的小数位数
-- 结果 12.13
SELECT ROUND(12.125,2)
SUBSTRING_INDEX
作用:根据指定的分隔符(delimiter)截取字符串的一部分。
select SUBSTRING_INDEX('apple,banana,orange,grape',',',1) -- 第一个逗号左边
select SUBSTRING_INDEX('apple,banana,orange,grape',',',2) -- 第二个逗号左边
select SUBSTRING_INDEX('apple,banana,orange,grape',',',3) -- 第三个逗号左边select SUBSTRING_INDEX('apple,banana,orange,grape',',',-1) -- 第一个逗号右边
select SUBSTRING_INDEX('apple,banana,orange,grape',',',-2) -- 第二个逗号右边
select SUBSTRING_INDEX('apple,banana,orange,grape',',',-3) -- 第三个逗号右边