首页 > 数据库 >MySQL函数详解

MySQL函数详解

时间:2024-04-28 17:14:09浏览次数:22  
标签:返回 函数 示例 用途 详解 MySQL 字符串 SELECT name

 

  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;

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

 

标签:返回,函数,示例,用途,详解,MySQL,字符串,SELECT,name
From: https://www.cnblogs.com/xiaodi888/p/18164071

相关文章

  • MySQL索引优化二
    学习来源:图灵课堂https://vip.tulingxueyuan.cn 分页优化一般来说,我们的后台管理系统都是有翻页功能的,并且有时候还要加上一些筛选过滤条件;如果对查询没有经过特别的优化,那么就会发现翻页越往后就越慢,这是为什么呢?因为如果单独是使用limit,例如limit90000,5;这个并不是从第......
  • day26-python操作MySQL和实战
    1.事务innodb引擎中支持事务,myisam不支持。CREATETABLE`users`(`id`int(11)NOTNULLAUTO_INCREMENTPRIMARYKEY,`name`varchar(32)DEFAULTNULL,`amount`int(11)DEFAULTNULL)ENGINE=InnoDBDEFAULTCHARSET=utf8;例如:李杰给武沛齐转账100,那就会......
  • 最近常用的几个【行操作】的Pandas函数
    最近在做交易数据的统计分析时,多次用到数据行之间的一些操作,对于其中的细节,简单做了个笔记。1.shfit函数shift函数在策略回测代码中经常出现,计算交易信号,持仓信号以及资金曲线时都有涉及。这个函数的主要作用是将某列的值上下移动。默认情况下,shift函数是向下移动一行,移动后,新......
  • mysqlalchemy audit extension
    mysqlalchemyauditextensionhttps://sqlalchemy-declarative-extensions.readthedocs.io/en/stable/audit_tables.htmlfromsqlalchemyimportColumn,typesfromsqlalchemy.ormimportdeclarative_basefromsqlalchemy_declarative_extensionsimportdeclarative_......
  • mysql触发器记录log
    记录指定参数变化https://zhuanlan.zhihu.com/p/439273702DELIMITER//CREATETRIGGERlog_sales_updatesAFTERUPDATEONsalesFOREACHROWInsertintoaudit_log(sales_id,previous_amount,new_amount,updated_by,updated_on)VALUES(NEW.sales_id,OLD.sales_amoun......
  • MySQL三大日志(binlog,redolog,undolog)详解
    转发https://segmentfault.com/a/1190000041758784一、MySQL日志MySQL日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。其中比较重要的就是二进制日志binlog(归档日志)、事务日志redolog(重做日志)和undolog(回滚日志)。日志关系如下图:二、redologre......
  • MySQL ROUND() 四舍五入 精度丢失
    四舍五入精度丢失mysql>SELECTROUND('164.85',1),ROUND(164.85,1);+--------------------+------------------+|ROUND('164.85',1)|ROUND(164.85,1)|+--------------------+------------------+|164.8|164.9|+......
  • MySql版本问题sql_mode=only_full_group_by
    报错:1055Expression#1ofSELECTlistisnotinGROUPBYclauseandcontainsnonaggregatedc错误代码1055原因 select子句中包含GROUPBY子句中没有的列,并且没有使用聚合函数,并且sql_mode=only_full_group_bymysql5.7及之后版本默认启用了only_full_group_bySQL模式,这......
  • openGauss 时间-日期函数和操作符
    时间/日期函数和操作符时间日期操作符警告:用户在使用时间和日期操作符时,对应的操作数请使用明确的类型前缀修饰,以确保数据库在解析操作数的时候能够与用户预期一致,不会产生用户非预期的结果。比如下面示例没有明确数据类型就会出现异常错误。SELECTdate'2001-10-01'-'7......
  • Java中的读写锁ReentrantReadWriteLock详解,存在一个小缺陷
    写在开头最近是和java.util.concurrent.locks包下的同步类干上了,素有并发根基之称的concurrent包中全是精品,今天我们继续哈,今天学习的主题要由一个大厂常问的Java面试题开始:小伙子,来说一说Java中的读写锁,你都用过哪些读写锁吧?这个问题小伙伴们遇到了该如何回答呢?心里琢磨去......