MySQL的一些重要函数
字符函数
例子:
SELECT CONCAT(‘HEOOL’,’WORLD’);
输出 HELLOWORLD
CONCAT_WS(‘|’,’A’,’B’,’C’);
输出 A|B|C
SELECT FORMAT(12345.75,2);
输出 12,345.75
SELECT FORMAT(12345.75,1);
输出 12,345.8
SELECT LOWER(‘MySQL’);
输出 mysql
SELECT UPPER(‘mysql’);
输出 MYSQL
SELECT LEFT(‘MySQL’,2);
输出 My
SELECT LOWER(LEFT(‘MySQL’,2));
输出 my
SELECT RIGHT(‘MySQL’,3);
输出 SQL
SELECT LENGTH(‘MySQL’);
输出 5
SELECT LENGTH(‘My SQL’);
输出 6
SELECT LENGTH(‘ MySQL ’);
输出 9
SELECT LENGTH(LTRIM(‘ MySQL ’));
输出 7
SELECT LENGTH(RTRIM(‘ MySQL ’));
输出 7
SELECT LENGTH(TRIM(‘ MySQL ’));
输出 5
SELECT TRIM(LEADING ‘?’ FROM ‘??MySQL???’);
输出 MySQL???
SELECT TRIM(TRAILING ‘?’ FROM ‘??MySQL???’);
输出 ??MySQL
SELECT TRIM(BOTH ‘?’ FROM ‘??MySQL???’);
输出 MySQL
SELECT TRIM(BOTH ‘?’ FROM ‘??My??SQL???’);
输出 My??SQL
SELECT REPLACE(‘’??My??SQL???’,’?’,’ ’);
输出 MySQL
SELECT REPLACE(‘’??My??SQL???’,’?’,’ !*’);
输出 !*!*My!*!*SQL!*!*!*
SELECT REPLACE(‘’??My??SQL???’,’??’,’!’);
输出 !My!SQL!?
SELECT SUBSTRING(‘MySQL’,1,2);
输出 My
SELECT SUBSTRING(‘MySQL’,3);
输出 SQL
SELECT SUBSTRING(‘MySQL’,-1);
输出 L
SELECT * FROM test WHERE first_name LIKE ‘%1%%’ ESCAPE ‘1’;
输出 first_name last_name
tom% 123
%(百分号):代表任意个字符
_():代表任意一个字符
数值运算符与函数
例子:
SELECT CEIL(3.01);
输出 4
SELECT FLOOR(3.99);
输出 4
SELECT 3/4;
输出 0.7500
SELECT 3 DIV 4;
输出 0
SELECT 5 MOD 3;
输出 2
SELECT 5.3 MOD 3;
输出 2.3
SELECT POWER(3,3);
输出 27
SELECT ROUND(3.652,2);
输出 3.65
SELECT ROUND(3.652,1);
输出 3.7
SELECT ROUND(3.652,0);
输出 4
SELECT TRUNCATE(125.89,0);
输出 125
SELECT TRUNCATE(125.89,-1);
输出 120
比较运算符和函数
例子:
SELECT 15 BETWEEN 1 AND 22;
输出 1
SELECT 35 NOT BETWEEN 1 AND 22;
输出 1
SELECT 10 IN(5,10,15,20);
输出 1
SELECT NULL IS NULL;
输出 1
例子:
SELECT NOW();
输出 2016-06-28 10:24:54
SELECT CURDATE();
输出 2016-06-28
SELECT CURTIME();
输出 10:25:34
SELECT DATE_ADD(‘2016-06-28’,INTERVAL 365 DAY);
输出 2017-06-28
SELECT DATE_ADD(‘2016-06-28’,INTERVAL -365 DAY);
输出 2015-06-29
SELECT DATEDIFF(‘2016-06-28’,’2017-06-28’);
输出 -365
SELECT DATE_FORMAT(‘2016-06-28’,’%m/%d/%Y’);
输出 06/28/2016
信息函数
例子:
SELECT CONNECTION_ID();
输出 3
SELECT DATABASE();
输出 test
聚合函数
例子:
SELECT AVG(id) FROM test;
输出 4.0000
加密函数
自定义函数
自定义函数的两个必要条件:
(1)零个或多个参数
(2)返回值
函数可以返回任意类型的值,同样可以接收这些类型的参数
创建自定义函数
CREATE FUNCTION function_name RETURNS {STRING | INTEGER | REAL | DECIMAL} routine_body
关于函数体
(1)函数体由合法的SQL语句构成;
(2)函数体可以是简单的SELECT或INSERT语句;
(3)函数体如果为复合结构则使用BEGIN...END语句;
(4)复合结构可以包含声明,循环,控制结构。
创建不带参数的自定义函数
CREATE FUNCTION f1() RETURNS VARCHAR(30)
RETURN DATE_FORMAT(NOW(),’%Y年%m月%d日%H点:%i分:%s秒’);
调用函数
SELECT f1();
创建带参数的自定义函数
CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMQLLINT UNSIGNED)
RETURNS FLOAT(10,2) UNSIGNED
RETURN (num1+num2)/2;
调用函数
SELECT f2(10,15);
创建具有复合结构函数体的自定义函数
首先更改MySQL结束符,可以使用// (根据自己喜好更改),如果按照默认的结束符 " ; " ,在函数体中书写SQL语句的时候," ; "代表的是SQL语句的结束,而不是函数体的结束,导致RETRUN语句没有返回值。
DELIMITER //
CREATE FUNCTION adduser(username VARCHAR(20))
RETURNS INT UNSIGNED
BEGIN
INSERT test(username) VALUES(username);
RETURN LAST_INSERT_ID();
END
//
调用函数
SELECT adduser(‘Rose’);
删除函数
DROP FUNCTION [IF EXISTS] function_name