MySQL函数详解



前言

      MySQL,作为开源数据库领域的佼佼者,其强大的函数库为数据处理提供了无限可能。从基本的字符串操作到复杂的日期时间计算,再到高效的聚合分析,MySQL函数都能助你一臂之力。我们整理了一些实用的函数使用方法和介绍,本教程将带你深入探索MySQL的各类函数,从基础到进阶。


 

  1. CONCAT()

    • 用途:连接两个或多个字符串。
    • 示例:
      sql`SELECT CONCAT('Hello', ' ', 'World') AS Greeting;`
     

    这将返回 'Hello World'

  2. LOWER() 和 UPPER()

    • 用途:将字符串转换为小写或大写。
    • 示例:
      sql`SELECT LOWER('HELLO') AS Lowercase, UPPER('hello') AS Uppercase;`

    这将返回 'hello' 和 'HELLO'

  3. TRIM()

    • 用途:去除字符串的前导和/或尾随空格。
    • 示例:
      sql`SELECT TRIM(' Hello World ') AS TrimmedString;`

    这将返回 'Hello World'

  4. NOW() 和 CURDATE()

    • 用途:返回当前的日期和时间或仅返回日期。
    • 示例:
      sql`SELECT NOW() AS CurrentDateTime, CURDATE() AS CurrentDate;`

    这将返回当前的日期和时间以及仅日期部分。

  5. ROUND()

    • 用途:对数字进行四舍五入。
    • 示例:
      sql`SELECT ROUND(123.4567, 2) AS RoundedNumber;`

    这将返回 123.46

  6. IFNULL()

    • 用途:如果第一个参数为NULL,则返回第二个参数的值;否则返回第一个参数的值。
    • 示例:
      sql`SELECT IFNULL(NULL, 'Default Value') AS Result;`

    这将返回 'Default Value'

  7. DATE_FORMAT()

    • 用途:按指定的格式显示日期/时间值。
    • 示例:
      sql`SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS FormattedDateTime;`

    这将返回一个格式化后的日期和时间,如 '2023-10-23 14:30:45'

 

 

 

  1. DATE_ADD() 和 DATE_SUB()
  • 用途:DATE_ADD()函数用于在日期上添加指定的时间间隔,而DATE_SUB()函数用于从日期中减去指定的时间间隔。
  • 示例:
    SELECT DATE_ADD(CURDATE(), INTERVAL 1 DAY) AS TomorrowsDate;
    SELECT DATE_SUB(CURDATE(), INTERVAL 1 MONTH) AS LastMonthDate;

             这将分别返回明天的日期和上个月的日期。

  1. DATEDIFF()
  • 用途:计算两个日期之间的天数差异。
  • 示例:
    SELECT DATEDIFF('2023-10-31', '2023-10-01') AS DaysDifference;

            这将返回30,表示两个日期之间相差30天。

  1. COALESCE()
  • 用途:返回参数中的第一个非NULL值。
  • 示例:
    SELECT COALESCE(NULL, NULL, 'Third Value', 'Fourth Value') AS FirstNonNullValue;

            这将返回'Third Value',因为它是第一个非NULL值。

  1. CASE
  • 用途:在SQL查询中执行条件逻辑。
  • 示例:
    SELECT   
        name,  
        age,  
        CASE   
            WHEN age < 20 THEN 'Teenager'  
            WHEN age BETWEEN 20 AND 60 THEN 'Adult'  
            ELSE 'Senior'  
        END AS age_group  
    FROM users;

            这将根据age列的值将用户分类为'Teenager'、'Adult'或'Senior'。

  1. MONTH() 和 YEAR()
  • 用途:从日期中提取月份和年份。
  • 示例:
    SELECT MONTH('2023-10-23') AS Month, YEAR('2023-10-23') AS Year;

            这将分别返回10和2023。

  1. GROUP_CONCAT()
  • 用途:将多个行的值连接成一个字符串。
  • 示例:
    假设有一个orders表,其中有一个product_name列,您想要获取每个订单中的所有产品名称,以逗号分隔:
  • SELECT order_id, GROUP_CONCAT(product_name) AS products  
    FROM orders  
    GROUP BY order_id;

            这将返回每个订单ID及其对应的产品名称列表,产品名称之间用逗号分隔。

 

  1. LENGTH() 和 CHAR_LENGTH()
  • 用途:LENGTH()函数返回字符串的字节长度,而CHAR_LENGTH()函数返回字符串的字符数。对于单字节字符集,两者结果是相同的;但对于多字节字符集(如UTF-8),它们可能会有所不同。
  • 示例:
    SELECT order_id, GROUP_CONCAT(product_name) AS products  
    FROM orders  
    GROUP BY order_id;

            对于'Hello',两者都会返回5。但对于'你好'(在UTF-8编码下),LENGTH()可能会返回6(每个中文字符通常占用3个字节),而CHAR_LENGTH()会返回2(字符数)。

 

  1. SUBSTRING()
  • 用途:从字符串中提取子串。
  • 示例:
    SELECT SUBSTRING('Hello World', 1, 5) AS ExtractedString;

            这将返回'Hello',即从第1个字符开始提取5个字符。

  1. REPLACE()
  • 用途:在字符串中替换所有的某个子串为另一个子串。
  • 示例:
    SELECT REPLACE('Hello World', 'World', 'Universe') AS ReplacedString;

            这将返回'Hello Universe'

  1. FIND_IN_SET()
  • 用途:查找一个字符串在逗号分隔的字符串列表中的位置。
  • 示例:
    SELECT FIND_IN_SET('b', 'a,b,c,d,e') AS Position;

            这将返回2,因为'b'是列表中的第二个元素。

  1. LAST_INSERT_ID()
  • 用途:返回最后一个INSERT操作生成的AUTO_INCREMENT值。
  • 示例:
    假设您有一个带有AUTO_INCREMENT主键的表,并且您刚刚插入了一行数据,您可以使用此函数来获取新插入行的ID。
  1. MD5()
  • 用途:计算字符串的MD5哈希值。
  • 示例:
    SELECT MD5('Hello') AS HashedString;

            这将返回字符串'Hello'的MD5哈希值。

 

 

  1. CAST() 和 CONVERT()
  • 用途:这两个函数用于数据类型转换。它们可以将一个数据类型转换为另一个数据类型。
  • 示例:
    SELECT CAST('123' AS SIGNED) AS ConvertedNumber;  
    SELECT CONVERT('2023-10-23', DATE) AS ConvertedDate;

            第一个示例将字符串'123'转换为有符号整数,第二个示例将字符串'2023-10-23'转换为日期类型。

  1. ELT()
  • 用途:根据索引值返回字符串列表中的字符串。
  • 示例:
    SELECT ELT(2, 'a', 'b', 'c', 'd') AS SelectedString;

            这将返回'b',因为它是列表中索引为2的元素。

  1. FIELD()
  • 用途:返回字符串在字符串列表中的位置。
  • 示例:
    SELECT FIELD('b', 'a', 'b', 'c', 'd') AS Position;

            这将返回2,因为'b'是列表中第二个元素。

  1. FORMAT()
  • 用途:对数字进行格式化,添加千位分隔符并保留指定的小数位数。
  • 示例:
    SELECT FORMAT(1234567.89, 2) AS FormattedNumber;

            这将返回'1,234,567.89',即带有千位分隔符并保留两位小数的数字。

  1. POWER()
  • 用途:返回数字的乘方结果。
  • 示例:
    SELECT POWER(2, 3) AS Result;

            这将返回8,即2的3次方。

  1. RADIANS() 和 DEGREES()
  • 用途:RADIANS()函数将角度转换为弧度,DEGREES()函数将弧度转换为角度。
  • 示例:
    SELECT RADIANS(45) AS Radians, DEGREES(PI()) AS Degrees;

            这将返回45度对应的弧度和π弧度对应的角度。

 

  1. ROUND()
  • 用途:对数字进行四舍五入到指定的小数位数。
  • 示例:
    SELECT ROUND(123.4567, 2) AS RoundedNumber;

            这将返回123.46,即四舍五入到小数点后两位。

  1. TRUNCATE()
  • 用途:将数字截断到指定的小数位数,不进行四舍五入。
  • 示例:
    SELECT TRUNCATE(123.4567, 2) AS TruncatedNumber;

            这将返回123.45,即截断到小数点后两位。

  1. LEAST() 和 GREATEST()
  • 用途:LEAST()返回参数列表中的最小值,GREATEST()返回参数列表中的最大值。
  • 示例:
    SELECT LEAST(10, 20, 30, 40) AS SmallestNumber, GREATEST(10, 20, 30, 40) AS LargestNumber;

            这将返回10作为最小值,40作为最大值。

  1. NULLIF()
  • 用途:如果两个表达式相等,则返回NULL;否则返回第一个表达式的值。
  • 示例:
    SELECT NULLIF(5, 5) AS Result1, NULLIF(5, 6) AS Result2;

            这将返回NULL作为Result1,因为两个5相等;返回5作为Result2,因为56不相等。

  1. COALESCE与IFNULL()
  • 用途:COALESCE()返回参数列表中的第一个非NULL值,而IFNULL()返回两个参数中的第一个非NULL值。
  • 示例:
    SELECT COALESCE(NULL, NULL, 'Third Value') AS FirstNonNull, IFNULL(NULL, 'Second Value') AS FirstNonNullAlternative;

            这将返回'Third Value'作为FirstNonNull,因为前两个参数都是NULL;返回'Second Value'作为FirstNonNullAlternative,因为第一个参数是NULL。

 

 

  1. CONCAT() 和 CONCAT_WS()
  • 用途:CONCAT()函数用于连接两个或多个字符串,而CONCAT_WS()函数在连接字符串时,可以在各个字符串之间插入指定的分隔符。
  • 示例:
    SELECT CONCAT('Hello', ' ', 'World') AS ConcatenatedString;  
    SELECT CONCAT_WS(',', 'Apple', 'Banana', 'Cherry') AS CommaSeparatedString;

            第一个示例将返回'Hello World',第二个示例将返回'Apple,Banana,Cherry'

  1. SOUNDEX()
  • 用途:返回一个字符串的SOUNDEX值,该值是根据字符串的发音生成的,可以用于模糊匹配相似的发音。
  • 示例:
    SELECT SOUNDEX('Smith') AS SoundexValue;

            这将返回Smith的SOUNDEX值,通常用于搜索发音相似的名字。

  1. QUOTE()
  • 用途:用反引号括起字符串,用于生成可用于SQL查询的合法字符串。
  • 示例:
    SELECT QUOTE('Column Name') AS QuotedString;

            如果'Column Name'包含特殊字符或空格,QUOTE()函数会确保它可以在SQL查询中正确使用。

  1. DATE_FORMAT() 和 STR_TO_DATE()
  • 用途:DATE_FORMAT()函数用于按指定格式显示日期/时间值,而STR_TO_DATE()函数则将字符串解析为日期/时间值。
  • 示例:
    SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') AS FormattedDate;  
    SELECT STR_TO_DATE('2023-10-23', '%Y-%m-%d') AS ParsedDate;

            第一个示例将当前日期格式化为'YYYY-MM-DD'的形式,第二个示例将字符串'2023-10-23'解析为日期类型。

  1. GET_LOCK() 和 RELEASE_LOCK()
  • 用途:GET_LOCK()用于获取一个命名的锁,如果锁被其他会话持有,则当前会话会等待直到可以获取锁;RELEASE_LOCK()则用于释放之前获取的锁。
  • 示例:
    SELECT GET_LOCK('my_lock', 10) AS LockAcquired;  
    -- 执行一些需要锁定资源的操作  
    SELECT RELEASE_LOCK('my_lock') AS LockReleased;

            这些函数通常用于控制对共享资源的并发访问。

 

 

  1. LAST_INSERT_ID()
  • 用途:返回最后一个由当前会话通过INSERT语句插入的AUTO_INCREMENT列的值。
  • 示例:
    INSERT INTO users (username) VALUES ('JohnDoe');  
    SELECT LAST_INSERT_ID() AS LastInsertedID;

            如果users表中的id列是AUTO_INCREMENT的,那么LAST_INSERT_ID()将返回新插入记录的id值。

  1. USER() 和 CURRENT_USER()
  • 用途:返回当前MySQL会话的用户和主机信息。USER()返回用户的完整信息,而CURRENT_USER()返回当前授权用户的信息。
  • 示例:
    SELECT USER() AS CurrentUser, CURRENT_USER() AS AuthorizedUser;

            这将返回当前会话的用户名和主机名,以及授权给该会话的用户名和主机名。

  1. DATABASE()
  • 用途:返回当前MySQL会话使用的数据库名。
  • 示例:
    SELECT DATABASE() AS CurrentDatabase;

            如果当前会话连接到了mydb数据库,那么此查询将返回mydb

  1. VERSION()
  • 用途:返回当前MySQL服务器的版本信息。
  • 示例:
    SELECT VERSION() AS MySQLVersion;

            这将返回MySQL服务器的版本号。

  1. BENCHMARK()
  • 用途:用于测量表达式的执行速度,通常用于性能测试和调优。
  • 示例:
    SELECT BENCHMARK(1000000, MD5('test'));

            这将运行MD5函数一百万次,并返回执行时间。注意:在生产环境中使用BENCHMARK()可能会对性能产生负面影响,因此应谨慎使用。

 

 

 

  1. INET_ATON() 和 INET_NTOA()
  • 用途:INET_ATON()将IPv4地址从点分十进制格式转换为整数,而INET_NTOA()则将整数转换回点分十进制格式的IPv4地址。
  • 示例:
    SELECT INET_ATON('192.168.1.1') AS IPv4Integer, INET_NTOA(3232235777) AS IPv4Address;

            这将返回IPv4地址的整数表示和点分十进制表示。

  1. LOAD_FILE()
  • 用途:读取指定文件的内容,并将其作为字符串返回。
  • 示例:
    SELECT LOAD_FILE('/path/to/file.txt') AS FileContent;

            请注意,为了安全起见,MySQL的file_priv系统变量必须设置为允许访问的目录,并且MySQL服务器用户必须具有读取文件的权限。

  1. ELT()
  • 用途:根据提供的索引从参数列表中选择一个值。
  • 示例:
    SELECT ELT(2, 'a', 'b', 'c', 'd') AS SelectedValue;

            这将返回参数列表中的第二个值,即'b'

  1. FIELD()
  • 用途:返回参数列表中第一个参数的索引位置。
  • 示例:
    SELECT FIELD('b', 'a', 'b', 'c', 'd') AS Position;

            这将返回2,因为'b'是参数列表中的第二个值。

  1. FIND_IN_SET()
  • 用途:返回一个字符串在逗号分隔的列表中的位置。
  • 示例:
    SELECT FIND_IN_SET('b', 'a,b,c,d') AS Position;

            这将返回2,因为'b'是逗号分隔列表中的第二个值。

 

 

  1. COALESCE()
  • 用途:返回参数列表中的第一个非NULL值。
  • 示例:
    SELECT COALESCE(NULL, NULL, 'third', 'fourth') AS FirstNonNullValue;

            此查询将返回'third',因为它是参数列表中第一个非NULL的值。

  1. NULLIF()
  • 用途:如果两个参数相等,则返回NULL;否则返回第一个参数的值。
  • 示例:
    SELECT NULLIF(5, 5) AS Result1, NULLIF(5, 6) AS Result2;

            这将返回NULL作为Result1的值,因为两个参数相等;而Result2的值将是5,因为两个参数不相等。

  1. GREATEST() 和 LEAST()
  • 用途:GREATEST()返回参数列表中的最大值,而LEAST()返回最小值。
  • 示例:
    SELECT GREATEST(1, 3, 2, 5) AS MaxValue, LEAST(1, 3, 2, 5) AS MinValue;

            这将返回5作为MaxValue的值,1作为MinValue的值。

  1. CASE
  • 用途:在SQL查询中执行条件逻辑,类似于其他编程语言中的switch-case结构。
  • 示例:
    SELECT   
        column_name,  
        CASE   
            WHEN column_name = 'value1' THEN 'Result 1'  
            WHEN column_name = 'value2' THEN 'Result 2'  
            ELSE 'Other Result'  
        END AS case_result  
    FROM table_name;

            这个查询根据column_name的值返回不同的结果。

  1. IF()
  • 用途:如果条件为真,则返回第一个值;否则返回第二个值。
  • 示例:
    SELECT IF(1 > 0, 'True', 'False') AS Result;

            这将返回'True',因为条件1 > 0为真。

 

 

 

 

  1. CONCAT()
  • 用途:连接两个或多个字符串。
  • 示例:
    SELECT CONCAT('Hello', ' ', 'World') AS Greeting;

            这将返回字符串'Hello World'

  1. TRIM()
  • 用途:去除字符串前后的空格或其他指定字符。
  • 示例:
    SELECT TRIM(' Hello World ') AS TrimmedString;

            这将返回没有前后空格的字符串'Hello World'

  1. LOWER() 和 UPPER()
  • 用途:LOWER()将字符串转换为小写,UPPER()将字符串转换为大写。
  • 示例:
    SELECT LOWER('HELLO WORLD') AS LowercaseString, UPPER('hello world') AS UppercaseString;

            这将返回小写字符串'hello world'和大写字符串'HELLO WORLD'

  1. SUBSTRING()
  • 用途:从字符串中提取子字符串。
  • 示例:
    SELECT SUBSTRING('Hello World', 1, 5) AS SubstringResult;

            这将返回子字符串'Hello'

  1. DATE_FORMAT()
  • 用途:按指定格式显示日期/时间值。
  • 示例:
    SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') AS FormattedDate;

            这将返回当前日期的格式化字符串,例如'2023-09-17'

 

 

  1. COUNT()
  • 用途:计算表中满足条件的记录数。
  • 示例:
    SELECT COUNT(*) FROM users WHERE status = 'active';
    这个查询将返回状态为'active'的用户数量。

            这个查询将返回状态为'active'的用户数量。

  1. SUM()
  • 用途:计算某列的总和。
  • 示例:
    SELECT SUM(order_amount) FROM orders WHERE year(order_date) = 2023;

            这个查询将返回2023年所有订单的总金额。

  1. AVG()
  • 用途:计算某列的平均值。
  • 示例:
    SELECT AVG(salary) FROM employees WHERE department = 'sales';

            这个查询将返回销售部门的平均薪资。

  1. ROUND()
  • 用途:对数值进行四舍五入。
  • 示例:
    SELECT ROUND(123.4567, 2) AS RoundedValue;

            这个查询将返回四舍五入到小数点后两位的结果123.46

  1. DATEDIFF()
  • 用途:计算两个日期之间的天数差异。
  • 示例:
    SELECT DATEDIFF('2023-10-01', '2023-09-15') AS DaysDifference;

            这个查询将返回两个日期之间的天数差,即16天。

 

 

  1. GROUP_CONCAT()
  • 用途:将多个行的值连接成一个字符串。
  • 示例:
    SELECT user_id, GROUP_CONCAT(tag_name) AS tags  
    FROM user_tags  
    GROUP BY user_id;

            这个查询将返回每个用户的所有标签,以逗号分隔的形式展示。

  1. YEAR(), MONTH(), DAY()
  • 用途:从日期中提取年、月、日部分。
  • 示例:
    SELECT YEAR(order_date) AS order_year, MONTH(order_date) AS order_month  
    FROM orders;

            这个查询将返回订单日期的年份和月份。

  1. IFNULL()
  • 用途:如果第一个参数为NULL,则返回第二个参数的值;否则返回第一个参数的值。
  • 示例:
    SELECT first_name, IFNULL(middle_name, '') AS middle_name_or_empty  
    FROM employees;

            这个查询将返回员工的名字,如果中间名(middle_name)为NULL,则返回空字符串。

  1. LAST_INSERT_ID()
  • 用途:返回最后一个INSERT操作产生的AUTO_INCREMENT值。
  • 示例:
    假设有一个带有AUTO_INCREMENT主键的表users,在插入新记录后,可以使用此函数获取新记录的ID。
  • INSERT INTO users (username) VALUES ('newuser');  
    SELECT LAST_INSERT_ID();

            第二个查询将返回新插入用户的ID。

  1. EXTRACT()
  • 用途:从日期或时间值中提取指定的部分,如年、月、日、小时等。
  • 示例:
    SELECT EXTRACT(HOUR FROM order_time) AS order_hour  
    FROM orders;

            这个查询将返回订单时间的小时部分。

 

 

 

 

  1. COALESCE()
  • 用途:返回参数列表中的第一个非NULL值。
  • 示例:
    SELECT first_name, COALESCE(middle_name, 'N/A') AS middle_name_or_default  
    FROM employees;

            这个查询返回员工的名字和中间名,如果中间名为NULL,则返回'N/A'。

  1. CASE
  • 用途:在SQL查询中进行条件判断,根据条件返回不同的值。
  • 示例:
    SELECT status,  
           CASE  
               WHEN status = 'active' THEN 'Active User'  
               WHEN status = 'inactive' THEN 'Inactive User'  
               ELSE 'Unknown Status'  
           END AS status_description  
    FROM users;

            这个查询根据用户状态返回不同的状态描述。

  1. IS NULL 和 IS NOT NULL
  • 用途:用于检查字段是否为NULL或非NULL。
  • 示例:
    SELECT * FROM orders WHERE shipping_address IS NULL;

            这个查询返回所有没有填写收货地址的订单。

  1. MAX() 和 MIN()
  • 用途:返回某列的最大值和最小值。
  • 示例:
    SELECT MAX(salary) AS highest_salary, MIN(salary) AS lowest_salary  
    FROM employees;

            这个查询返回员工薪资的最高值和最低值。

  1. NOW() 和 CURDATE()
  • 用途:返回当前日期和时间或仅返回当前日期。
  • 示例:
    SELECT NOW() AS current_datetime, CURDATE() AS current_date;

            这个查询返回当前的日期和时间以及仅包含日期的当前日期。

 

 

 

 

  1. CONCAT()
  • 用途:连接两个或多个字符串。
  • 示例:
    SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM users;

            这个查询将用户的名和姓连接成一个完整的名字。

  1. TRIM()
  • 用途:去除字符串前后的空格或其他指定字符。
  • 示例:
    SELECT TRIM(' leading spaces ') AS trimmed_string;

            这个查询将去除字符串前后的空格。

  1. UPPER() 和 LOWER()
  • 用途:将字符串转换为大写或小写。
  • 示例:
    SELECT UPPER(name) AS upper_name, LOWER(name) AS lower_name FROM products;

            这个查询将返回产品名称的大写和小写形式。

  1. SUBSTRING()
  • 用途:从字符串中提取子字符串。
  • 示例:
    SELECT SUBSTRING(email, 1, 5) AS email_prefix FROM users;

            这个查询将返回用户邮箱地址的前五个字符。

  1. FIND_IN_SET()
  • 用途:在逗号分隔的字符串列表中查找一个字符串,并返回其位置(如果存在)。
  • 示例:
    SELECT FIND_IN_SET('apple', 'banana,apple,orange') AS position;

            这个查询将返回'apple'在字符串列表中的位置,即2。

 

 

  1. LENGTH() 和 CHAR_LENGTH()
  • 用途:返回字符串的长度。LENGTH()返回字节长度,而CHAR_LENGTH()返回字符数。
  • 示例:
    SELECT name, LENGTH(name) AS byte_length, CHAR_LENGTH(name) AS char_length FROM products;

            这个查询返回产品名称的字节长度和字符数。

  1. LPAD() 和 RPAD()
  • 用途:在字符串的左边或右边填充指定的字符,直到达到指定的长度。
  • 示例:
    SELECT LPAD(number, 5, '0') AS padded_number FROM orders;

            这个查询将订单号左侧填充0,直到长度为5。

  1. REPLACE()
  • 用途:在字符串中替换所有的指定子字符串。
  • 示例:
    SELECT REPLACE(description, 'old', 'new') AS updated_description FROM products;

            这个查询将产品描述中的'old'替换为'new'。

  1. DATE_FORMAT()
  • 用途:按照指定的格式显示日期/时间值。
  • 示例:
    SELECT DATE_FORMAT(order_date, '%Y-%m-%d') AS formatted_date FROM orders;

            这个查询将订单日期格式化为'YYYY-MM-DD'的形式。

  1. DAYOFWEEK(), DAYOFMONTH(), DAYOFYEAR()
  • 用途:分别返回日期值是一周中的第几天、一个月中的第几天、一年中的第几天。
  • 示例:
    SELECT order_date, DAYOFWEEK(order_date) AS day_of_week FROM orders;

            这个查询返回订单日期以及它是该周的第几天。

 

 

  1. LAST_DAY()
  • 用途:返回给定日期的月份的最后一天的日期。
  • 示例:
    SELECT LAST_DAY('2023-09-15') AS last_day_of_month;

            这个查询返回2023年9月的最后一天。

  1. DATEDIFF()
  • 用途:返回两个日期之间的天数差。
  • 示例:
    SELECT DATEDIFF('2023-10-23', '2023-10-01') AS days_difference;

            这个查询返回两个日期之间的天数差。

  1. MONTH() 和 YEAR()
  • 用途:从日期值中提取月份和年份。
  • 示例:
    SELECT order_date, MONTH(order_date) AS month, YEAR(order_date) AS year FROM orders;

            这个查询返回订单日期以及对应的月份和年份。

  1. ROUND(), CEIL() 和 FLOOR()
  • 用途:对数字进行四舍五入、向上取整和向下取整。
  • 示例:
    SELECT ROUND(123.4567, 2) AS rounded_value, CEIL(123.4567) AS ceiling_value, FLOOR(123.4567) AS floor_value;

            这个查询分别对一个数字进行四舍五入到小数点后两位、向上取整和向下取整。

  1. ABS()
  • 用途:返回数字的绝对值。
  • 示例:
    SELECT ABS(-123) AS absolute_value;

            这个查询返回-123的绝对值。

 

 

 

  1. IFNULL()
  • 用途:如果第一个参数为NULL,则返回第二个参数的值;否则返回第一个参数的值。
  • 示例:
    SELECT IFNULL(column_name, 'default_value') AS column_value FROM table_name;

            这个查询将返回column_name的值,如果该值为NULL,则返回'default_value'

  1. NULLIF()
  • 用途:如果两个参数相等,则返回NULL;否则返回第一个参数的值。
  • 示例:
    SELECT NULLIF(column1, column2) AS result FROM table_name;

            这个查询将比较column1column2的值,如果它们相等,则返回NULL;否则返回column1的值。

  1. GREATEST() 和 LEAST()
  • 用途:返回一组值中的最大值和最小值。
  • 示例:
    SELECT GREATEST(value1, value2, value3) AS max_value, LEAST(value1, value2, value3) AS min_value FROM table_name;

            这个查询将返回value1value2value3中的最大值和最小值。

  1. POWER()
  • 用途:返回数字的乘方结果。
  • 示例:
    SELECT POWER(base, exponent) AS result FROM table_name;

            这个查询将返回baseexponent次方的结果。

  1. MOD()
  • 用途:返回两数相除的余数。
  • 示例:
    SELECT MOD(dividend, divisor) AS remainder FROM table_name;

            这个查询将返回dividend除以divisor的余数。

 

 

  1. COALESCE()
  • 用途:返回参数列表中的第一个非NULL值。
  • 示例:
    SELECT COALESCE(column1, column2, column3) AS non_null_value FROM table_name;

            这个查询将返回column1column2column3中的第一个非NULL值。

  1. ISNULL() 或 IF(ISNULL(...))
  • 用途:检查一个值是否为NULL。
  • 示例:
    SELECT IF(ISNULL(column_name), 'is null', 'not null') AS null_check FROM table_name;

            这个查询将检查column_name是否为NULL,并返回相应的字符串。

  1. CASE
  • 用途:在SQL查询中进行条件判断,类似于其他编程语言中的switch语句。
  • 示例:
    SELECT   
        column_name,  
        CASE   
            WHEN condition1 THEN result1  
            WHEN condition2 THEN result2  
            ELSE default_result  
        END AS case_result  
    FROM table_name;

            这个查询根据condition1condition2的值返回不同的result

  1. CAST() 和 CONVERT()
  • 用途:将一个数据类型转换为另一个数据类型。
  • 示例:
    SELECT CAST(column_name AS datatype) AS converted_value FROM table_name;  
    -- 或者  
    SELECT CONVERT(datatype, column_name) AS converted_value FROM table_name;

            这两个查询都将column_name的值转换为指定的datatype

  1. LOG() 和 LOG10()
  • 用途:计算数的自然对数(以e为底)或以10为底的对数。
  • 示例:
    SELECT LOG(number) AS natural_log, LOG10(number) AS log_base_10 FROM table_name;

            这个查询计算number的自然对数和以10为底的对数。

 

 

 

  1. TRIM()
  • 用途:去除字符串两侧的空格或指定字符。
  • 示例:
    SELECT TRIM('   leading spaces   ') AS trimmed_string;  
    -- 或者去除指定字符  
    SELECT TRIM(BOTH 'x' FROM 'xHelloWorldx') AS trimmed_string;

            这个查询将去除字符串两侧的空格或指定字符。

  1. LTRIM() 和 RTRIM()
  • 用途:分别去除字符串左侧的空格或指定字符,以及右侧的空格或指定字符。
  • 示例:
    SELECT LTRIM(' leading spaces') AS left_trimmed, RTRIM('trailing spaces ') AS right_trimmed;

            这两个查询分别去除字符串左侧的空格和右侧的空格。

  1. CONCAT()
  • 用途:连接两个或多个字符串。
  • 示例:
    SELECT CONCAT('Hello', ' ', 'World') AS concatenated_string;

            这个查询将连接三个字符串,并返回结果。

  1. SUBSTRING() 或 SUBSTR()
  • 用途:从字符串中提取子串。
  • 示例:
    SELECT SUBSTRING('Hello World', 1, 5) AS substring_result;  
    -- 或者  
    SELECT SUBSTR('Hello World', 7) AS substr_result;

            这两个查询分别从字符串中提取子串。第一个从位置1开始提取5个字符,第二个从位置7开始提取到字符串末尾。

  1. LENGTH() 或 CHAR_LENGTH()
  • 用途:返回字符串的长度。
  • 示例:
    SELECT LENGTH('Hello World') AS string_length;  
    -- 或者  
    SELECT CHAR_LENGTH('Hello World') AS char_length;

这两个查询都返回字符串的长度。

 



结语

亲爱的朋友:
      希望本文中描述的问题以及解决方案,可以帮助到您。当然,我们深知,问题和挑战总是层出不穷,新的情况也在不断涌现。如果读者朋友您有更好的方案,或者在实际应用中发现了文中的不足之处,请不吝分享您的宝贵建议。诚挚地邀请每一位读者加入我们的行列,共同完善这份教程。
    感谢您的阅读与支持!

Dear frends,

     We hope that the questions and solutions presented in this article can be of assistance to you. Of course, we are fully aware that problems and challenges are always emerging in an endless stream, and new situations are constantly arising. If you, our readers, have better solutions or have discovered any deficiencies in this article through practical application, please do not hesitate to share your valuable suggestions with us. We sincerely invite every reader to join us in continuously improving this tutorial.

Thank you for your reading and support!
See you,Parting is for better meeting!


 

posted @ 2024-04-28 17:01  xiaodi888  阅读(41)  评论(0编辑  收藏  举报