MySQL之函数:字符串函数、日期函数、数值函数、流程函数

本文详细介绍了SQL中的字符串函数(如CONCAT、SUBSTRING等)、日期时间处理函数(如CURDATE、DATE_FORMAT等)以及一些基本的数值和流程控制函数,帮助理解如何在数据库查询中进行文本和日期操作。
摘要由CSDN通过智能技术生成

字符串函数:用于对文本数据进行操作和处理

  1. CONCAT:用于将多个字符串连接成一个字符串。

    SELECT CONCAT('Hello', ' ', 'World'); -- 输出: 'Hello World'
    
  2. SUBSTRING:用于截取字符串的子串。包前不包后,从1开始

    SELECT SUBSTRING('MySQL', 1, 3); -- 输出: 'My'
    
  3. UPPERLOWER:用于将字符串转换为大写和小写。

    SELECT UPPER('mysql'); -- 输出: 'MYSQL'
    SELECT LOWER('MYSQL'); -- 输出: 'mysql'
    
  4. LENGTH:用于返回字符串的长度。

    SELECT LENGTH('MySQL'); -- 输出: 5
    
  5. TRIM:用于去除字符串两侧的空格或指定字符。

    SELECT TRIM('   MySQL   '); -- 输出: 'MySQL'
    SELECT TRIM('x' FROM 'xxxMySQLxxx'); -- 输出: 'MySQL'
  6. REPLACE:用于替换字符串中的指定子串。

    SELECT REPLACE('MySQL is great', 'great', 'awesome'); -- 输出: 'MySQL is awesome'
    
  7. LEFTRIGHT:用于从字符串的左边或右边截取指定长度的子串

    SELECT LEFT('MySQL', 2); -- 输出: 'My'
    SELECT RIGHT('MySQL', 3); -- 输出: 'SQL'
    
  8. INSTR:用于查找子串在字符串中的位置。

    SELECT INSTR('MySQL is great', 'is'); -- 输出: 7
    
  9. LOCATE:用于查找子串在字符串中的位置,类似于INSTR函数。

    SELECT LOCATE('is', 'MySQL is great'); -- 输出: 7
    
  10. REVERSE:用于将字符串反转。

    SELECT REVERSE('MySQL'); -- 输出: 'LqsyM'
    
  11. CONCAT_WS:用于将多个字符串使用指定分隔符连接成一个字符串。

    SELECT CONCAT_WS(', ', 'apple', 'orange', 'banana'); -- 输出: 'apple, orange, banana'
    
  12. LPADRPAD:用于在字符串左边或右边填充指定字符,使字符串达到指定长度。

    SELECT LPAD('hello', 10, '*'); -- 输出: '*****hello'
    SELECT RPAD('hello', 10, '*'); -- 输出: 'hello*****'
    
  13. ASCII:用于返回字符的ASCII码值;CHAR:用于根据ASCII码值返回字符。

    SELECT ASCII('A'); -- 输出: 65
    SELECT CHAR(65); -- 输出: 'A'
    

日期函数:用于处理和操作日期和时间数据

  1. CURDATE:用于返回当前日期。
    SELECT CURDATE(); -- 输出: 当前日期,如 '2024-04-09'
  2. CURTIME:用于返回当前时间。
    SELECT CURTIME(); -- 输出: 当前时间,如 '21:53:35'
  3. NOW:用于返回当前日期和时间。
    SELECT NOW(); -- 输出: 当前日期和时间,如 '2024-04-09 21:53:35'
    
  4. DATE:用于提取日期部分。
    SELECT DATE(NOW()); -- 输出: 当前日期,如 '2024-04-09'
    
  5. TIME:用于提取时间部分。
    SELECT TIME(NOW()); -- 输出: 当前时间,如 '21:53:35'
    
  6. DAY:用于提取日期的天数部分。
    SELECT DAY(NOW()); -- 输出: 当前日期的天数,如 9
    
  7. MONTH:用于提取日期的月份部分。
    SELECT MONTH(NOW()); -- 输出: 当前日期的月份,如 4
    
  8. YEAR:用于提取日期的年份部分。
    SELECT YEAR(NOW()); -- 输出: 当前日期的年份,如 2024
    
  9. DATE_FORMAT:用于格式化日期。
    SELECT DATE_FORMAT(NOW(), '%Y-%m-%d'); -- 输出: 格式化后的当前日期,如 '2024-04-09'
    
  10. DATEDIFF:用于计算两个日期之间的天数差。
    SELECT DATEDIFF('2024-04-10', '2024-04-01'); -- 输出: 9
    
  11. DATE_ADDDATE_SUB:用于对日期进行加减操作。
    SELECT DATE_ADD('2024-04-09', INTERVAL 1 DAY); -- 输出: '2024-04-10'
    SELECT DATE_SUB('2024-04-09', INTERVAL 1 MONTH); -- 输出: '2024-03-09'
    

数值函数:用于对数值数据进行操作和处理

  1. ABS:用于返回一个数的绝对值。
    SELECT ABS(-10); -- 输出: 10
    
  2. ROUND:用于将数值四舍五入到指定的小数位数。
    SELECT ROUND(3.14159, 2); -- 输出: 3.14
    
  3. CEIL:用于向上取整,FLOOR函数用于向下取整。
    SELECT CEIL(3.5); -- 输出: 4
    SELECT FLOOR(3.5); -- 输出: 3
    
  4. SQRT:用于计算一个数的平方根。
    SELECT SQRT(16); -- 输出: 4
    
  5. POWER:用于计算一个数的指定次幂。
    SELECT POWER(2, 3); -- 输出: 8
    
  6. RAND:用于生成一个0到1之间的随机数。
    SELECT RAND(); -- 输出: 0.12345(示例随机数)
    
  7. MOD:用于计算两个数的模。
    SELECT MOD(10, 3); -- 输出: 1
    
  8. SIGN:用于返回数值的符号,正数返回1,负数返回-1,0返回0。
    SELECT SIGN(-10); -- 输出: -1
    
  9. EXP:用于计算自然对数的指定数值次幂。
    SELECT EXP(1); -- 输出: 2.71828(e的近似值)
    
  10. LOG:用于计算指定数的自然对数。
    SELECT LOG(10); -- 输出: 2.30259(以e为底的对数)
    
  11. SINCOSTAN:分别用于计算给定角度的正弦、余弦和正切值。
    SELECT SIN(0); -- 输出: 0
    SELECT COS(0); -- 输出: 1
    SELECT TAN(0); -- 输出: 0
    

流程函数:用于在SQL语句中执行流程控制逻辑

  1. IF函数用于在条件成立时返回一个值,否则返回另一个值。
    SELECT IF(10 > 5, 'true', 'false'); -- 输出: 'true'
    
  2. CASE函数用于实现多重条件判断,类似于编程语言中的switch-case语句。
    SELECT 
        CASE 
            WHEN grade >= 90 THEN 'A'
            WHEN grade >= 80 THEN 'B'
            WHEN grade >= 70 THEN 'C'
            ELSE 'D'
        END AS grade_letter
    FROM students;
    
  3. COALESCE函数用于返回参数列表中的第一个非NULL值。
    SELECT COALESCE(NULL, 10, 20); -- 输出: 10
    
  4. NULLIF函数用于比较两个表达式,如果相等则返回NULL,否则返回第一个表达式的值。
    SELECT NULLIF(10, 10); -- 输出: NULL
    
  5. IFNULL函数用于判断第一个表达式是否为NULL,如果是则返回第二个表达式,否则返回第一个表达式。
    SELECT IFNULL(NULL, 'default'); -- 输出: 'default'
  6. CASE WHEN语句用于实现条件判断,类似于编程语言中的if-else语句。
    SELECT 
        CASE 
            WHEN age < 18 THEN 'Child'
            WHEN age >= 18 AND age < 65 THEN 'Adult'
            ELSE 'Senior'
        END AS age_group
    FROM users;
    SELECT 
        CASE 
            WHEN age < 18 THEN 'Child'
            WHEN age >= 18 AND age < 65 THEN 'Adult'
            ELSE 'Senior'
        END AS age_group
    FROM users;
  7. GREATEST函数用于返回参数列表中的最大值,LEAST函数用于返回参数列表中的最小值。
    SELECT GREATEST(10, 20, 30); -- 输出: 30
    SELECT LEAST(10, 20, 30); -- 输出: 10
    
  8. 在存储过程中使用,ITERATE用于跳到循环的下一次迭代,LEAVE用于退出循环。
    CREATE PROCEDURE test_loop()
    BEGIN
        DECLARE i INT DEFAULT 0;
        my_loop: LOOP
            SET i = i + 1;
            IF i > 5 THEN
                LEAVE my_loop;
            END IF;
            SELECT i;
        END LOOP my_loop;
    END;
    
    
  9. SIGNAL:在存储过程中使用,用于抛出一个自定义的错误消息。
    CREATE PROCEDURE test_signal()
    BEGIN
        IF 10 < 5 THEN
            SIGNAL SQLSTATE '45000'
            SET MESSAGE_TEXT = 'Custom error message';
        END IF;
    END;
    
  • 37
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值