运算符和函数

字符函数

函数名称描述
CONCAT(…)字符连接
CONCAT_WS(设置分隔符,…)使用指定的分隔符进行字符连接
FORMAT(…,保留位数)数字格式化
LOWER()转换成小写
UPPER()转换成大写
LEFT(…,获取位数)获取左侧字符
RIGHT(…,获取位数)获取右侧字符
LENGTH()获得字符串长度
LTRIM()删除前空格
RTRIM()删除尾空格
TRIM( [LEADING/TRAILING/BOTH ‘目标字符串’] )删除前后空格/删除指定字符串(前或后)
SUBSTRING(字符串,起始位(可以负值),截取位数)进行字符串的截取
[NOT] LIKE模式的匹配
REPLACE(字符串,要替换的字段,替换成)替换

举个模式匹配的栗子:

mysql> SELECT 'MYSQL' LIKE 'M%';
+-------------------+
| 'MYSQL' LIKE 'M%' |
+-------------------+
|                 1 |
+-------------------+

# 匹配users表中username开头为T的记录
mysql> SELECT * FROM users WHERE username LIKE 'T%';

匹配%字段,这时系统会把%当做通配符处理,为了避免冲突,就有了ESCAPE

用法:LIKE '%1%%' ESCAPE '1'
上代码说明1后面的%不是通配符,而是当做百分号匹配

注:%:代表任意个字符,_:代表任意一个字符

数值运算符和函数

名称描述
CEIL()进一取整(向上取)
DIV整数除法
FLOOR()舍一取整(向下取)
MOD/%取余数(模)
POWER(.,指数)幂运算
ROUND()四舍五入
TRUNCATE()数字截取

比较运算符和函数

名称描述
[NOT] BETWEEN…AND…[不]在范围内
[NOT] IN()[不]在列出范围内
IS [NOT] NULL[不]为空

日期时间函数

名称描述
NOW()当前日期和时间
CURDATE()当前日期
CURTIME()当前时间
DATE_ADD(‘XXXX-X-X’,±DAY/WEEK/MONTH/YEAR)日期变化
DATEDIFF(XX,XX)日期差值
DATE_FORMAT(…,’%m/%d/%Y’)日期格式化

栗子:

SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点:%i分:%s秒');
+--------------------------------------------------------+
| DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点:%i分:%s秒')       |
+--------------------------------------------------------+
| 2016年10月13日 09点:22分:42秒                          |
+--------------------------------------------------------+

信息函数

名称描述
CONNECTION_ID()连接ID
DATEBASE()当前数据库
LAST_INSERT_ID()最后插入记录的ID号
USER()当前用户
VERSION()版本信息

LAST_INSERT_ID():写入多条记录后,使用此语句只返回第一条写入的ID,而不是后面所写入的ID

聚合函数

特点:只有一个返回值

名称描述
AVG()平均值
COUNT()计数
MAX()最大值
MIN()最小值
SUM求和

加密函数

名称描述
MD5()信息摘要算法
PASSWORD()密码算法

修改密码:mysql> SET PASSWORD=PASSWORD('comeon');

自定义函数

概念

用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法和内置函数相同
自定义函数的两个必要条件:
1.参数(不一定)
2.返回值(都有)

这两个条件之间没有必然联系,例如某一函数可以没有参数,但是存在返回值,有两个参数的函数返回值是一个,参数的数量理论上不超过1024个

  • 函数可以返回任意类型的值,同样可以接收这些类型的参数

创建UDF

语法结构:

CREATE FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} routine_body
  • RETURNS:返回值的类型
  • routine_body:当前的函数体

关于函数体:
1.函数体由合法的SQL语句构成
2.函数体可以是简单的SELECT语句或INSERT语句
3.函数体如果为复合结构则使用BEGIN…END语句
4.复合结构可以包含声明,循环,控制结构

查看UDF:
SHOW FUNCTION STATUS;
删除UDF:
DROP FUNCTION fct_name

创建不带参数的UDF

例如把之前日期函数的栗子变成UDF:

mysql> CREATE FUNCTION f1() RETURNS VARCHAR(30) RETURN DATE_FORMAT(NOW(),'%YAD%mM%dD-%H:%i:%s');
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT f1();
+-----------------------+
| f1()                  |
+-----------------------+
| 2016AD10M13D-09:42:44 |
+-----------------------+
1 row in set (0.00 sec)

创建带有参数的UDF

跟之前相比,向()内添加参数,直接看例子

mysql> CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)
    -> RETURNS FLOAT(10,2) UNSIGNED
    -> RETURN (num1+num2)/2;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT f2(100,25);
+------------+
| f2(100,25) |
+------------+
|      62.50 |
+------------+
1 row in set (0.00 sec)

创建复合结构函数体的UDF

改变MYSQL分隔符:DELIMITER 分隔符

mysql> CREATE FUNCTION adduser(username VARCHAR(20)) RETURNS INT UNSIGNED 
BEGIN INSERT test(username) VALUES(username); RETURN LAST_INSERT_ID();
END//
Query OK, 0 rows affected (0.00 sec)
MATLAB中有两种类型的逻辑运算符函数:Element-wiseShort-circuit。 1. Element-wise运算符函数:这些运算符函数对应元素的逻辑阵列进行运算。例如,对于两个逻辑阵列AB,A&B将返回一个逻辑阵列,其中每个元素都是AB对应元素的逻辑 AND 运算结果。常见的Element-wise运算符函数有: - &:逻辑 AND 运算符对应元素相乘。 - |:逻辑 OR 运算符对应元素相加。 - ~:逻辑 NOT 运算符对应元素取反。 - xor:逻辑 XOR 运算符对应元素进行异或运算。 - any:判断逻辑阵列中是否存在至少一个非零元素。 - all:判断逻辑阵列中所有元素是否都非零。 2. Short-circuit运算符函数:这些运算符函数对标量逻辑表达式进行运算。例如,对于两个逻辑表达式AB,A&&B将返回一个逻辑值,表示AB的逻辑 AND 运算结果。常见的Short-circuit运算符函数有: - &&:逻辑 AND 运算符,如果第一个表达式为false,则不计算第二个表达式。 - ||:逻辑 OR 运算符,如果第一个表达式为true,则不计算第二个表达式。 - &:逻辑 AND 运算符,对标量逻辑表达式进行运算。 - |:逻辑 OR 运算符,对标量逻辑表达式进行运算。 - ~:逻辑 NOT 运算符,对标量逻辑表达式进行运算。 下面是一些例子: ```matlab % Element-wise运算符函数 A = [1 0 1; 0 1 0; 1 0 1]; B = [0 1 1; 1 0 1; 0 1 0]; C = A & B % 对应元素相乘,输出:[0 0 1; 0 0 0; 0 0 0] D = A | B % 对应元素相加,输出:[1 1 1; 1 1 1; 1 1 1] E = ~A % 对应元素取反,输出:[0 1 0; 1 0 1; 0 1 0] F = xor(A, B) % 对应元素进行异或运算,输出:[1 1 0; 1 1 1; 1 1 1] G = any(A) % 判断逻辑阵列中是否存在至少一个非零元素,输出:[1 1 1] H = all(A) % 判断逻辑阵列中所有元素是否都非零,输出:0 % Short-circuit运算符函数 a = 1; b = 2; c = (a == 1) && (b == 2) % 逻辑 AND 运算符,输出:1 d = (a == 2) || (b == 2) % 逻辑 OR 运算符,输出:1 e = (a == 1) & (b == 2) % 逻辑 AND 运算符,输出:1 f = (a == 2) | (b == 2) % 逻辑 OR 运算符,输出:1 g = ~(a == 2) % 逻辑 NOT 运算符,输出:1 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值