MySQL常见函数

一、字符函数

1.1.字符函数

1.2.大小写控制函数

这类函数改变字符的大小写

1.3.字符控制函数

函数控制字符:

注意:

  • TRIM() 函数用于去除字符串首尾的空格或指定字符。
  • REPLACE() 函数用于替换字符串中的指定部分。

二、数学函数

函数作用 测试值 操作后值
ROUND: 四舍五入  ROUND(45.926,2) 45.93
TRUNCATE:截断 SELECT TRUNCATE(23.1523,2) 23.15
MOD: 求余 SELECT MOD(1700,200) 100

三、日期函数

now:获取当前日期

SELECT NOW()

str_to_date: 将日期格式的字符转换成指定格式的日期

STR_TO_DATE('11-13-2023','%m-%d-%Y')
SELECT STR_TO_DATE('11-13-2023','%m-%d-%Y')

date_format:将日期转换成字符

SELECT DATE_FORMAT('2022/12/23/','%Y年%m月%d日')

格式符号说明:

四、流程控制函数【补充】

在SQL中,虽然没有直接的IF-THEN-ELSE语句,但我们可以使用CASE语句和一些其他技巧来实现类似的条件判断和分支控制。

4.1.CASE 表达式语法

在需要使用IF-THEN-ELSE 逻辑时:

4.2.案例

案例:查询部门号为10, 20, 30 的员工信息, 若部门号为10, 则打印 其工资的1.1 倍, 20 号部门, 则打印其工资的1.2 倍, 30 号部门打印 其工资的1.3 倍数

SELECT last_name,department_id,salary,
    CASE department_id
    WHEN 10 THEN 1.1*salary
    WHEN 20 THEN 1.2*salary    
    WHEN 30 THEN 1.3*salary
    ELSE salary END "REVISED_SALARY"
FROM employees WHERE department_id IN (10,20,30)

五、其余

5.1.CONCAT 和 CAST 函数

当谈到数据库查询和数据处理时,CONCAT 和 CAST 是两个常用的 MySQL 函数。

CONCAT 函数:

  • CONCAT 函数用于将多个字符串连接成一个字符串。
  • 例如,CONCAT('Hello', ' ', 'World') 将返回字符串 'Hello World'。
  • 在 SQL 查询中,你可以使用 CONCAT 来拼接不同列的值,或者在字符串中添加其他字符。
  • 这在构建自定义文本字段、生成报告或拼接数据时非常有用。
SELECT CONCAT('hello','world')

CAST 函数:

  • CAST 函数用于将一个数据类型转换为另一个数据类型。
  • 例如,如果你有一个存储为字符串的数字,你可以使用 CAST 将其转换为整数或浮点数。
  • 示例:
    • SELECT CAST('123' AS SIGNED INTEGER); 将字符串 '123' 转换为整数。
    • SELECT '123' + 0; 通过 +0 将字符串自动转换为整数。
    • SELECT CONVERT('123', SIGNED); 也可以实现相同的效果。

案例:计算百分占比

SELECT  CAST(123/6786 * 100  AS DECIMAL(4,2))

总之,CONCAT 用于字符串连接,而 CAST 用于数据类型转换。

5.2.SUBSTRING_INDEX函数

MySQL中的SUBSTRING_INDEX()函数用于从字符串中提取指定分隔符前或后的子字符串。它的语法如下:

SUBSTRING_INDEX(str, delim, count)

其中:

  • str: 要处理的字符串
  • delim: 用作分隔符的字符串
  • count: 要返回的子字符串的数量。如果 count 是正数,则返回从左边开始的第 count 个子字符串。如果 count 是负数,则返回从右边开始的第 |count| 个子字符串。

下面是一些使用示例:

⑴.从左边提取第2个子字符串:

SELECT SUBSTRING_INDEX('www.example.com', '.', 2); -- 输出: 'www.example'

⑵.从右边提取第2个子字符串:

SELECT SUBSTRING_INDEX('www.example.com', '.', -2); -- 输出: 'example.com'

⑶.提取文件名和扩展名:

SELECT
  SUBSTRING_INDEX('file.txt', '.', -1) AS extension, -- 输出: 'txt'
  SUBSTRING_INDEX('file.txt', '.', 1) AS filename; -- 输出: 'file'

⑷.提取URL中的域名:

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('http://www.example.com/path/file.html', '/', 3), '/', -1); -- 输出: 'www.example.com'

⑸.提取薪资

SELECT SUBSTRING_INDEX('6-8千/月','千/月',1)

执行后如下:

image-20240522103115243

 

⑹.提取最低薪资和最高薪资

 

薪资区间是6-8,则最低薪资是6,最高薪资是8,那么如何提取:

# 6-8 根据-切片。1取的是6 最小值
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('6-8千/月','千/月',1),'-',1)
# 6-8 根据-切片。-1取的是8 最大值
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('6-8千/月','千/月',1),'-',1)
总之, SUBSTRING_INDEX()函数非常有用,可以帮助你从字符串中提取所需的子字符串。根据具体需求,可以灵活地调整count参数的正负值来获取想要的结果。
posted @ 2024-05-13 18:10  酒剑仙*  阅读(51)  评论(0)    收藏  举报