SQL中常用的内置函数

:2024年06月20日 架构师必备
分享到:

在SQL(结构化查询语言)中,有许多内置函数可用于各种数据操作和计算。以下是SQL中常用的函数。

在SQL(结构化查询语言)中,有许多内置函数可用于各种数据操作和计算。以下是SQL中常用的函数。

一.字符串操作、数值计算、日期处理

COUNT(): 统计行数。

SELECT COUNT(*) FROM employees;

SUM(): 计算数值列的总和。

SELECT SUM(salary) FROM employees;

AVG(): 计算数值列的平均值。

SELECT AVG(salary) FROM employees;

MIN(): 返回列中的最小值。

SELECT MIN(salary) FROM employees;

MAX(): 返回列中的最大值。

SELECT MAX(salary) FROM employees;

LENGTH(): 返回字符串的长度。

SELECT LENGTH(name) FROM employees;

SUBSTRING(): 提取字符串的一部分。

SELECT SUBSTRING(name, 1, 3) FROM employees;

REPLACE(): 替换字符串中的子串。

SELECT REPLACE(name, 'John', 'Jonathan') FROM employees;

UPPER(): 将字符串转换为大写。

SELECT UPPER(name) FROM employees;

LOWER(): 将字符串转换为小写。

SELECT LOWER(name) FROM employees;

二.数据操作和计算

CONCAT(): 连接两个或多个字符串。

SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;

TRIM(): 去除字符串两端的空格或其他字符。

SELECT TRIM('   Hello World!   ') AS trimmed_string;

ROUND(): 对数值进行四舍五入。

SELECT ROUND(salary, 2) FROM employees;

CEIL(): 返回大于等于指定数值的最小整数。

SELECT CEIL(123.45) AS ceiling_value;

FLOOR(): 返回小于等于指定数值的最大整数。

SELECT FLOOR(123.45) AS floor_value;

NOW(): 返回当前的日期和时间。

SELECT NOW() AS current_date_time;

DATE(): 从日期时间中提取日期部分。

SELECT DATE(NOW()) AS current_date;

DATEDIFF(): 返回两个日期之间的天数差。

SELECT DATEDIFF(NOW(), '2024-01-01') AS days_difference;

IFNULL(): 如果表达式的结果为NULL,则返回指定的值。

SELECT IFNULL(middle_name, 'N/A') FROM employees;

COALESCE(): 返回第一个非NULL的表达式。

SELECT COALESCE(middle_name, first_name, 'N/A') FROM employees;

三.数据类型转换、条件判断和其他常用操作

CAST(): 将一个表达式转换为另一种数据类型。

SELECT CAST(salary AS DECIMAL(10, 2)) FROM employees;

CONVERT(): 另一种用于数据类型转换的函数。

SELECT CONVERT(VARCHAR, hire_date, 101) FROM employees;

ABS(): 返回数值的绝对值。

SELECT ABS(-123.45) AS absolute_value;

POWER(): 返回一个数的指定次方。

SELECT POWER(salary, 2) FROM employees;

SQRT(): 返回一个数的平方根。

SELECT SQRT(salary) FROM employees;

MOD(): 返回两个数相除的余数。

SELECT MOD(salary, 1000) FROM employees;

SIGN(): 返回数值的符号,负数返回-1,零返回0,正数返回1。

SELECT SIGN(salary) FROM employees;

RAND(): 返回一个0到1之间的随机数。

SELECT RAND() AS random_number;

CASE: 基于条件返回不同的值。

SELECT 

    name,

    CASE 

        WHEN salary < 50000 THEN 'Low'

        WHEN salary BETWEEN 50000 AND 100000 THEN 'Medium'

        ELSE 'High'

    END AS salary_level

FROM employees;

DECODE(): 另一种实现条件判断的函数,类似于CASE。

SELECT 

    name,

    DECODE(salary, 

           50000, 'Low', 

           100000, 'Medium', 

           'High') AS salary_level

FROM employees;

GREATEST(): 返回多个数值中的最大值。

SELECT GREATEST(salary, bonus, commission) FROM employees;

LEAST(): 返回多个数值中的最小值。

SELECT LEAST(salary, bonus, commission) FROM employees;

IF(): 实现条件判断,如果条件为真则返回一个值,否则返回另一个值。

SELECT 

    name,

    IF(salary > 50000, 'Above Average', 'Below Average') AS salary_status

FROM employees;

LEFT(): 从字符串的左边开始提取指定数量的字符。

SELECT LEFT(name, 3) FROM employees;

RIGHT(): 从字符串的右边开始提取指定数量的字符。

SELECT RIGHT(name, 3) FROM employees;

REVERSE(): 反转字符串。

SELECT REVERSE(name) FROM employees;

CHAR_LENGTH(): 返回字符串中的字符数。

SELECT CHAR_LENGTH(name) FROM employees;

POSITION(): 查找子串在字符串中的位置。

SELECT POSITION('Smith' IN name) FROM employees;

LOCATE(): 查找子串在字符串中的位置,返回子串的位置。

SELECT LOCATE('Smith', name) FROM employees;

GROUP_CONCAT(): 将一个组中的值连接成一个字符串。

SELECT GROUP_CONCAT(name) FROM employees;

四.窗口函数、日期时间操作

ROW_NUMBER(): 窗口函数,用于为结果集中的每一行分配唯一的行号。

SELECT 

    name, 

    salary,

    ROW_NUMBER() OVER (ORDER BY salary DESC) AS row_num

FROM employees;

RANK(): 窗口函数,用于为结果集中的每一行分配排名,允许并列。

SELECT 

    name, 

    salary,

    RANK() OVER (ORDER BY salary DESC) AS rank

FROM employees;

DENSE_RANK(): 窗口函数,类似于RANK(),但排名连续,没有间断。

SELECT 

    name, 

    salary,

    DENSE_RANK() OVER (ORDER BY salary DESC) AS dense_rank

FROM employees;

NTILE(): 窗口函数,将结果集划分为指定数量的桶,并为每一行分配桶号。

SELECT 

    name, 

    salary,

    NTILE(4) OVER (ORDER BY salary DESC) AS quartile

FROM employees;

LAG(): 窗口函数,用于访问前一行的值。

SELECT 

    name, 

    salary,

    LAG(salary, 1) OVER (ORDER BY salary DESC) AS previous_salary

FROM employees;

LEAD(): 窗口函数,用于访问后一行的值。

SELECT 

    name, 

    salary,

    LEAD(salary, 1) OVER (ORDER BY salary DESC) AS next_salary

FROM employees;

FIRST_VALUE(): 窗口函数,返回分区中的第一个值。

SELECT 

    name, 

    salary,

    FIRST_VALUE(salary) OVER (ORDER BY salary DESC) AS first_salary

FROM employees;

LAST_VALUE(): 窗口函数,返回分区中的最后一个值。

SELECT 

    name, 

    salary,

    LAST_VALUE(salary) OVER (ORDER BY salary DESC) AS last_salary

FROM employees;

DATE_ADD(): 向日期添加指定的时间间隔。

SELECT DATE_ADD(NOW(), INTERVAL 7 DAY) AS next_week;

DATE_SUB(): 从日期减去指定的时间间隔。

SELECT DATE_SUB(NOW(), INTERVAL 7 DAY) AS last_week;

YEAR(): 从日期中提取年份部分。

SELECT YEAR(hire_date) AS hire_year FROM employees;

MONTH(): 从日期中提取月份部分。

SELECT MONTH(hire_date) AS hire_month FROM employees;

DAY(): 从日期中提取天部分。

SELECT DAY(hire_date) AS hire_day FROM employees;

HOUR(): 从日期时间中提取小时部分。

SELECT HOUR(NOW()) AS current_hour;

MINUTE(): 从日期时间中提取分钟部分。

SELECT MINUTE(NOW()) AS current_minute;

SECOND(): 从日期时间中提取秒部分。

SELECT SECOND(NOW()) AS current_second;

EXTRACT(): 从日期时间中提取指定的部分(年份、月份、天、小时、分钟、秒)。

SELECT EXTRACT(YEAR FROM hire_date) AS hire_year FROM employees;

FORMAT(): 按照指定格式格式化日期或数值。

SELECT FORMAT(salary, 2) AS formatted_salary FROM employees;

UNIX_TIMESTAMP(): 返回当前时间的Unix时间戳。

SELECT UNIX_TIMESTAMP() AS current_timestamp;

FROM_UNIXTIME(): 将Unix时间戳转换为日期时间。

SELECT FROM_UNIXTIME(UNIX_TIMESTAMP()) AS current_datetime;

本文来源:https://mp.weixin.qq.com/s/ciALSneN_V2PnNRXjq99nQ

[我要纠错]
文:宋聪乔&发表于江苏
关键词: 结构化 查询 语言 许多 内置

来源:本文内容搜集或转自各大网络平台,并已注明来源、出处,如果转载侵犯您的版权或非授权发布,请联系小编,我们会及时审核处理。
声明:江苏教育黄页对文中观点保持中立,对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,不对文章观点负责,仅作分享之用,文章版权及插图属于原作者。

点个赞
0
踩一脚
0

您在阅读:SQL中常用的内置函数

Copyright©2013-2024 JSedu114 All Rights Reserved. 江苏教育信息综合发布查询平台保留所有权利

苏公网安备32010402000125 苏ICP备14051488号-3技术支持:南京博盛蓝睿网络科技有限公司

南京思必达教育科技有限公司版权所有   百度统计

最热文章
最新文章
  • 卡尔蔡司镜片优惠店,镜片价格低
  • 苹果原装手机壳