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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/39986.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024企业数据资产化及数据资产入表方案梳理

01 数据资产入表&#xff1a;是一个将组织的各类数据资产进行登记、分类、评估和管理的流程。 数据资产包括&#xff1a;客户信息、交易记录、产品数据、财务数据等。 做个比喻吧&#xff1a;数据资产入表就像是给公司的数据资产做“人口普查”—— ①找出公司有哪些数据找…

macos m2 百度paddleocr文字识别 python

创建了一个虚拟环境&#xff1a;conda create -n orc python3.11.7 进入虚拟环境后执行2条命令 pip install paddleocr -i https://pypi.tuna.tsinghua.edu.cn/simple pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple​ ​ 安装好后&#xff0c;在网…

204.贪心算法:分发饼干(力扣)

以下来源于代码随想录 class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {// 对孩子的胃口进行排序sort(g.begin(), g.end());// 对饼干的尺寸进行排序sort(s.begin(), s.end());int index s.size() - 1; // 从最大的饼…

Java使用分布式锁来做数据库事务控制

步骤如下&#xff1a; 1&#xff09;选择合适的分布式锁实现&#xff1a;常见的分布式锁实现包括ZooKeeper、Redis和基于数据库等。根据具体情况选择最佳方案。 2&#xff09;获取分布式锁&#xff1a;在需要进行操作时&#xff0c;首先尝试获取分布式锁。如果成功获取到&#…

严蔚敏数据结构(C语言版)吴伟民宁编著清华大学计算机系列教材+题集+配套题库+笔记+习题PDF电子版

今天分享的是 严蔚敏数据结构&#xff08;C语言版&#xff09;题集配套题库笔记习题PDF电子版 注&#xff1a;本资源搜集于网络&#xff0c;仅供学习交流&#xff0c;严禁用于商业用途 内容简介&#xff1a; “数据结构”是计算机程序设计的重要理论技术基础&#xff0c;它…

ArcTs布局入门04——相对布局 媒体查询

如果你也对鸿蒙开发感兴趣&#xff0c;加入“Harmony自习室”吧 扫描下面的二维码关注公众号。 本文将探讨相对布局与媒体查询&#xff0c;为啥把他们放到一起呢&#xff1f;主要是因为相对布局在响应式的场景下做得不太好&#xff0c;一般情况下和媒体查询&#xff08;不同尺…

MySQL之备份与恢复(二)

备份与恢复 定义恢复需求 如果一切正常&#xff0c;那么永远也不需要考虑恢复。但是&#xff0c;一旦需要恢复&#xff0c;只有世界上最好的备份系统是没用的&#xff0c;还需要一个强大的恢复系统。 不幸的是&#xff0c;让备份系统平滑工作比构造良好的恢复过程和工具更容易…

OCR是什么,主要应用和未来发展趋势

OCR&#xff0c;即光学字符识别&#xff08;Optical Character Recognition&#xff09;&#xff0c;是一种能够将图像文件中的文字资料转化为电子文本的技术。它广泛应用于数字化文档管理、自动化数据录入、智能识别等多个领域&#xff0c;涉及的主要技术包括图像预处理、特征…

【NBU大三下期末考试实录】

软件测试 任课老师&#xff1a;WXH&#xff0c;形式&#xff1a;开卷&#xff08;中文试卷&#xff0c;可携带中文书籍&#xff09; 复习建议&#xff1a;由于是开卷考&#xff0c;不需要过早复习&#xff0c;建议考前照着上课的PPT复习&#xff0c;大致有个概念即可&#xff…

WebRtc实现1V1音视频通话

WebRtc实现1V1音视频通话 简介应用场景共享桌面的基本原理传统共享桌面WebRTC 共享桌面 相关API基本使用调用本地摄像头播放约束设置 媒体协商过程协议协议的交换与传输 WebRTC 通信过程ICE Candidate&#xff08;ICE 候选者&#xff09; 1V1视频通话 简介 WebRTC&#xff0c;名…

新版本发布丨昂辉科技EasySAR-Configurator V1.2.0再启航

昂辉科技新一代跨平台高性能AUTOSAR配置工具EasySAR-Configurator V1.2.0全新版本重磅发布&#xff01;产品基于Web架构前后端分离的方式开发&#xff0c;可提供SaaS部署&#xff0c;能够实现精准配置和最大限度的代码裁剪&#xff0c;且配备标准的约束限制、配置验证、代码生成…

thinkphp6 亚马逊S3存储

在ThinkPHP6中使用亚马逊S3作为存储需要使用一个适合的库来与S3接口交互。这里我们可以使用league/flysystem-aws-s3-v3库来实现 composer require league/flysystem-aws-s3-v3 aws/aws-sdk-php然后&#xff0c;在ThinkPHP6中配置S3存储驱动。在config目录下创建一个新的配置…

jenkins 发布服务到linux服务器

1.环境准备 1.1 需要一台已经部署了jenkins的服务器&#xff0c;上面已经集成好了&#xff0c;jdk、maven、nodejs、git等基础的服务。 1.2 需要安装插件 pusblish over ssh 1.3 准备一台额外的linux服务器&#xff0c;安装好jdk 2.流程描述 2.1 配置jenkins&#xff0c;包括p…

java函数式接口的使用-自定义函数接口@FunctionalInterface消除if else和内置4大函数式接口

1.自定义函数接口FunctionalInterface消除if else FunctionalInterface public interface MyFunction<T, R> {R apply(T... t); }import com.google.common.collect.Maps;import java.util.Map;/*** 自定义函数消除if else*/ public class MyFunctionTest {//(自定义)一…

ubuntu系统下如何安装python

在Ubuntu系统下安装Python&#xff0c;有多种方法可供选择。以下是两种常见的方法&#xff1a; 一、使用apt包管理器安装 安装步骤如下&#xff1a; 首先更新软件包列表 sudo apt update安装Python 3&#xff1a; 输入以下命令以安装Python 3&#xff08;Ubuntu的默认Pyth…

如何将 Apifox 的自动化测试与 Jenkins 集成?

CI/CD &#xff08;持续集成/持续交付&#xff09; 在 API 测试 中的主要目的是为了自动化 API 的验证流程&#xff0c;确保 API 发布到生产环境前的可用性。通过持续集成&#xff0c;我们可以在 API 定义变更时自动执行功能测试&#xff0c;以及时发现潜在问题。 Apifox 支持…

二叉树的最近公共祖先-二叉树

236. 二叉树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; ​ 递归 lson、rson左右子树&#xff1b; 深度优先遍历&#xff0c;遍历到p或者q就返回ture&#xff1b; class Solution { public:TreeNode* ans;bool dfs(TreeNode* root, TreeNode* p, TreeNode* q){i…

墨烯的C语言技术栈-C语言基础-004

三.变量,常量 生活中有些值是不变的 有些值是可变的 // 变量和常量功能 // 变量分为 局部变量 和 全局变量 int b 20; 全局变量 int main() { short age 20; // 年龄 局部变量 int high 180; // 身高 局部变量 float weight 88.5 // 体重 局部变量 return 0;…

GoLand 2024 for Mac GO语言集成开发工具环境

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件&#xff08;适合自己的M芯片版或Intel芯片版&#xff09;&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功3、打开访达&#xff0c;点击【文…

CAN学习笔记

学习链接&#xff1a;CAN学习笔记&#xff08;1&#xff09;_can sjw-CSDN博客 内容全部取自链接&#xff0c;非原创。用于自己学习和记录&#xff0c;如有错误请指正。如果侵权了&#xff0c;请联系我删掉。 CAN主要有两种物理层&#xff0c;1.闭环的ISO11898 2.开环的ISO1…