sql常用函数积累(非窗口函数)

本文介绍了SQL中的几个重要字符串处理函数:concat用于字符串连接,replace用于替换子串,length计算长度,right和left提取子串,substring提取指定位置的子串,以及GROUP_CONCAT用于分组后合并列值。

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

1.concat

在 SQL 中,concat函数用于将两个或多个字符串值连接成一个字符串

例如,如果有一个包含姓氏(last_name)和名字(first_name)的表,可以使用 CONCAT 来生成一个完整的姓名:

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

concat函数在mysql中可以上这样连接多个字符串的,但是在 Oracle 数据库中,concat 函数只接受两个参数。要连接多个字符串,需要嵌套使用 cancat,或者使用 || 操作符。

2.replace

在 MySQL 中,REPLACE 函数是一个字符串函数,用于在一个字符串内替换所有出现的指定子字符串为另一个子字符串。如果要替换的子字符串在原字符串中不存在,则原字符串保持不变。

用法如下:

REPLACE(column, from_str, to_str)

从column中找到from_str子串替换为to_str子串,返回替换后的string。

所以如果要替换某个值可以这样写:

UPDATE titles_test
SET emp_no = REPLACE(emp_no, 10001, 10005)
WHERE id = 5;

tips:如果是使用replace into table_name values()的方式,则需要将所有的字段都写在括号里面

3.length

length函数返回字符串的长度,它可以和replace函数结合使用来统计某个字符串中某个字符出现的次数

select id ,length(string)-length(replace(string,',',''))
from strings

这就是在统计逗号出现的次数,用replace函数将逗号都替换成空白,之后再比较原字符串和现在的长度差

4.right left

right:提取字符串最右边的一定数量的字符

SELECT id, RIGHT(string, 2) AS last_two_chars
FROM your_table;

left:提取字符串最左边的一定数量的字符

SELECT id, LEFT(string, 2) AS first_two_chars
FROM your_table;

4.substring

SUBSTRING() 函数可以用来获取字符串从特定位置开始的特定长度的子串

substring(string,start,length)

5.group_concat

GROUP_CONCAT 函数用于将来自多个行的列值连接成一个字符串,这些行通常是分组后的结果

基本使用,合并分组后的名称,使用封号分隔符(不指定separator默认是逗号)

SELECT group_id, GROUP_CONCAT(name separator ';') AS names
FROM members
GROUP BY group_id;

6.cast

CAST 函数是一个标准的函数,用于转换数据类型。它允许你将一种数据类型转换为另一种数据类型。

CAST 函数的语法通常如下:

CAST (expression AS data_type [(length)])
  • expression:需要转换的字段或值。
  • data_type:要转换成的目标数据类型。
  • (length)(可选):对于某些数据类型,可以指定长度或精度。

举例:

将字符串转换为日期

SELECT CAST('2023-07-19' AS DATE);

在查询中使用 CAST 来格式化数据

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

7.decimal

DECIMAL 类型允许你指定数值的精度(总位数)和小数位数(小数点后的位数)

DECIMAL(precision, scale)
  • precision 是数字的总位数(包括小数点两边的数字),范围从1到最大精度值(这取决于数据库系统,例如在MySQL中,最大精度可以是65)。
  • scale 是小数点后的位数。如果省略 scale,则默认为0,意味着该数字是一个整数。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值