MySQL函数大全
1.& 按位和
结果类型取决于参数是否 评估为二进制字符串或数字:
当参数具有 二进制字符串类型,其中至少有一个不是 十六进制文本、位文本或文本。数值求值 否则发生,参数转换为无符号 根据需要使用 64 位整数。NULL
二进制字符串计算生成 与参数长度相同。如果参数有 长度不相等,则会发生ER_INVALID_BITWISE_OPERANDS_SIZE错误。数值计算产生无符号 64 位整数。
mysql> select 5 & 8;
+-------+
| 5 & 8 |
+-------+
| 0 |
+-------+
2.> 大于运算符
mysql> select 5 > 8;
+-------+
| 5 > 8 |
+-------+
| 0 |
+-------+
3.>> 位右移
mysql> select 5 >> 3;
+--------+
| 5 >> 3 |
+--------+
| 0 |
+--------+
1 row in set (0.00 sec)
mysql> select 5 >> 2;
+--------+
| 5 >> 2 |
+--------+
| 1 |
+--------+
1 row in set (0.00 sec)
4.>= 大于或等于运算符
mysql> select 5 >= 1;
+--------+
| 5 >= 1 |
+--------+
| 1 |
+--------+
5.< 小于运算符
mysql> select 1 < 5;
+-------+
| 1 < 5 |
+-------+
| 1 |
+-------+
6.<>,!= 不等于运算符
mysql> select 2<>3;
+------+
| 2<>3 |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
mysql> select 2!=3;
+------+
| 2!=3 |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
7.<< 位左移
mysql> select 1<<1;
+------+
| 1<<1 |
+------+
| 2 |
+------+
8.<= 小于或等于运算符
mysql> select 1 <= 3;
+--------+
| 1 <= 3 |
+--------+
| 1 |
+--------+
9.<=> 空安全等于运算符
mysql> select null <=> null;
+---------------+
| null <=> null |
+---------------+
| 1 |
+---------------+
1 row in set (0.00 sec)
mysql> select 1 <=> 1;
+---------+
| 1 <=> 1 |
+---------+
| 1 |
+---------+
1 row in set (0.00 sec)
mysql> select 1 <=> 2;
+---------+
| 1 <=> 2 |
+---------+
| 0 |
+---------+
1 row in set (0.00 sec)
10.%, MOD 模运算符
mysql> select 7 % 3;
+-------+
| 7 % 3 |
+-------+
| 1 |
+-------+
1 row in set (0.00 sec)
mysql> select 7 mod 3;
+---------+
| 7 mod 3 |
+---------+
| 1 |
+---------+
1 row in set (0.00 sec)
11.* 乘法运算符
mysql> select 3 * 3;
+-------+
| 3 * 3 |
+-------+
| 9 |
+-------+
12.+ 加法运算符
mysql> select 3 + 3;
+-------+
| 3 + 3 |
+-------+
| 6 |
+-------+
13.- 减法运算符
mysql> select 3-5;
-> -2
14.- 更改参数的符号(负号)
mysql> select - 2;
-> -2
15.->
评估路径后从 JSON 列返回值;相当于 JSON_EXTRACT()
16.->>
在计算路径和取消引用后从 JSON 列返回值 结果;等效于 JSON_UNQUOTE(JSON_EXTRACT())。
17./ 除法运算符
mysql> select 9 / 3;
+--------+
| 9 / 3 |
+--------+
| 3.0000 |
+--------+
18.:= 分配值
导致用户变量位于左侧 运算符的右侧,以取其右侧的值。 右侧的值可能是文字值, 另一个存储值或任何法律表达式的变量 生成标量值,包括查询结果 (前提是此值是标量值)。您可以 在同一 SET 语句中执行多个赋值。您可以在同一作业中执行多个作业 陈述。
与 = 不同,:= 运算符永远不会被解释为比较运算符。这 表示您可以使用 := 在 任何有效的 SQL 语句(不仅仅是在 SET 语句中)为变量赋值。
mysql> select @var1, @var2;
-> 1, NULL
mysql> select @var1, @var2 := @var1;
-> 1, 1
mysql> select @var1, @var2;
-> 1, 1
19.= 赋值
作为 SET 语句的一部分,或作为 UPDATE 语句中子句的一部)SET
20.= 相等运算符
mysql> select 1 = 1;
+-------+
| 1 = 1 |
+-------+
| 1 |
+-------+
21.^ 按位异或
结果类型取决于参数是否 评估为二进制字符串或数字:
当参数具有 二进制字符串类型,其中至少有一个不是 十六进制文本、位文本或文本。数值求值 否则发生,参数转换为无符号 根据需要使用 64 位整数。NULL
二进制字符串计算生成 与参数长度相同。如果参数有 长度不相等,则会发生ER_INVALID_BITWISE_OPERANDS_SIZE错误。数值计算产生无符号 64 位整数。
mysql> select 1 ^ 0;
+-------+
| 1 ^ 0 |
+-------+
| 1 |
+-------+
22.ABS() 返回绝对值
mysql> select ABS(-1);
+---------+
| ABS(-1) |
+---------+
| 1 |
+---------+
23.ACOS() 返回反余弦值
mysql> select acos(0.75);
+--------------------+
| acos(0.75) |
+--------------------+
| 0.7227342478134157 |
+--------------------+
24.ADDDATE() 将时间值(间隔)添加到日期值
mysql> select adddate(now(),interval 31 day);
+--------------------------------+
| adddate(now(),interval 31 day) |
+--------------------------------+
| 2023-01-11 20:23:57 |
+--------------------------------+
25.添加时间 ADDTIME()
ADDTIME(expr1,expr2)
ADDTIME() 将 expr2 添加到 expr1 并返回结果。expr1 是时间或日期时间 表达式,expr2 是一个时间 表达。如果 expr1或 expr2 为 NULLNULL
从 MySQL 8.0.28 开始,此函数的返回类型 和 SUBTIME() 函数 确定如下:
如果第一个参数是动态参数(例如在 预准备语句),返回类型为 TIME
否则,将派生函数的解析类型 从第一个参数的解析类型。
mysql> select addtime(now(),'1 1:1:1');
+--------------------------+
| addtime(now(),'1 1:1:1') |
+--------------------------+
| 2022-12-12 21:30:07 |
+--------------------------+
26.AES_ENCRYPT() 使用 AES 加密
密码短语可用于通过以下方式生成 AES 密钥 对密码进行哈希处理。例如:
INSERT INTO t
VALUES (1,AES_ENCRYPT('text', UNHEX(SHA2('My secret passphrase',512))));
27.AES_DECRYPT() 使用 AES 解密
mysql> SET block_encryption_mode = 'aes-256-cbc';
mysql> SET @key_str = SHA2('My secret passphrase',512);
mysql> SET @init_vector = RANDOM_BYTES(16);
mysql> SET @crypt_str = AES_ENCRYPT('text',@key_str,@init_vector);
mysql> SELECT AES_DECRYPT(@crypt_str,@key_str,@init_vector);
+-----------------------------------------------+
| AES_DECRYPT(@crypt_str,@key_str,@init_vector) |
+-----------------------------------------------+
| text |
+-----------------------------------------------+
28.AND, && 逻辑和
mysql> select 5 > 1 && 1 = 1;
+----------------+
| 5 > 1 && 1 = 1 |
+----------------+
| 1 |
+----------------+
29.ANY_VALUE()
抑制ONLY_FULL_GROUP_BY值拒绝 是不是类似于try catch?
此函数对于ONLY_FULL_GROUP_BY SQL 模式下的查询很有用 已启用,适用于 MySQL 拒绝您知道的查询的情况 由于 MySQL 无法确定的原因而有效。函数 返回值和类型与返回值和 其参数的类型,但未检查函数结果 对于ONLY_FULL_GROUP_BY SQL 模式。GROUP BY
30返回最左侧字符的数值 ASCII()
返回ASCII表
mysql> select ascii('a');
+------------+
| ascii('a') |
+------------+
| 97 |
+------------+
31.ASIN() 返回反正弦
mysql> select asin(0.5);
+--------------------+
| asin(0.5) |
+--------------------+
| 0.5235987755982989 |
+--------------------+
32.ATAN() 返回反正切
mysql> select atan(2);
+--------------------+
| atan(2) |
+--------------------+
| 1.1071487177940904 |
+--------------------+
33.ATAN2(), ATAN() 返回两个参数的反正切
mysql> select atan2(3),atan(1);
+--------------------+--------------------+
| atan2(3) | atan(1) |
+--------------------+--------------------+
| 1.2490457723982544 | 0.7853981633974483 |
+--------------------+--------------------+
34.AVG() 返回参数的平均值
select avg(score);#score是数据库中的表,里面包含分数
35.BENCHMARK() 重复执行表达式
BENCHMARK() 函数 执行表达式 expr 重复计数次数。可能是 用于计时 MySQL 处理表达式的速度。这 结果值为 ,或者对于不适当的参数,例如 a 或负重复计数。
mysql> select benchmark(10,aes_encrypt('hello world!','bye'));
+-------------------------------------------------+
| benchmark(10,aes_encrypt('hello world!','bye')) |
+-------------------------------------------------+
| 0 |
+-------------------------------------------------+
36.BETWEEN … AND … 值是否在值范围内
mysql> select 5 between 1 and 10, 3 between 1 and 2;
+--------------------+-------------------+
| 5 between 1 and 10 | 3 between 1 and 2 |
+--------------------+-------------------+
| 1 | 0 |
+--------------------+-------------------+
37.BIN()
返回包含数字的二进制表示形式的字符串
mysql> select bin('17');
+-----------+
| bin('17') |
+-----------+
| 10001 |
+-----------+
38.BINARY
将字符串转换为二进制字符串
mysql> select binary('hello world');
+----------------------------------------------+
| binary('hello world') |
+----------------------------------------------+
| 0x68656C6C6F20776F726C64 |
+----------------------------------------------+
39.BIN_TO_UUID()
将二进制 UUID 转换为字符串
40.BIT_AND() —看不懂
按位返回 AND
BIT_AND(expr) [over_clause]
返回 expr 中所有位的按位。AND
结果类型取决于函数参数是否 值被评估为二进制字符串或数字:
当参数值发生二进制字符串计算 具有二进制字符串类型,并且参数不是 十六进制文本、位文本或文本。数值求值 否则发生,参数值转换为 根据需要使用无符号的 64 位整数。NULL
二进制字符串计算生成 与参数值的长度相同。如果参数值 长度不相等,则会发生ER_INVALID_BITWISE_OPERANDS_SIZE错误。如果参数大小超过 511 字节,则会发生ER_INVALID_BITWISE_AGGREGATE_OPERANDS_SIZE错误。数值计算产生无符号 64 位整数。
如果没有匹配的行,BIT_AND() 返回中性 值(所有位设置为 1)的长度与 参数值。
NULL值不影响结果 除非所有值都是 .在这种情况下, 结果是一个中性值,其长度与 参数值。
41.BIT_COUNT() 返回设置的位数
mysql> select bit_count(3);
+--------------+
| bit_count(3) |
+--------------+
| 2 |
+--------------+
3是11,有两个1
42.BIT_LENGTH() 返回参数的长度(以位为单位)
mysql> select bit_length(3);
+---------------+
| bit_length(3) |
+---------------+
| 8 |
+---------------+
一个数字8位bit
43.BIT_OR() 按位返回 OR—看不懂
BIT_OR(expr) [over_clause]
返回 expr 中所有位的按位。
结果类型取决于函数参数是否 值被评估为二进制字符串或数字:
当参数值发生二进制字符串计算 具有二进制字符串类型,并且参数不是 十六进制文本、位文本或文本。数值求值 否则发生,参数值转换为 根据需要使用无符号的 64 位整数。NULL
二进制字符串计算生成 与参数值的长度相同。如果参数值 长度不相等,则会发生ER_INVALID_BITWISE_OPERANDS_SIZE错误。如果参数大小超过 511 字节,则会发生ER_INVALID_BITWISE_AGGREGATE_OPERANDS_SIZE错误。数值计算产生无符号 64 位整数。
如果没有匹配的行,BIT_OR() 返回中性 值(所有位设置为 0)的长度与 参数值。
NULL值不影响结果 除非所有值都是 .在这种情况下, 结果是一个中性值,其长度与 参数值。
44.BIT_XOR() 按位返回异或—看不懂
返回所有 的按位 XOR 位在 expr。
结果类型取决于函数参数是否 值被评估为二进制字符串或数字:
当参数值发生二进制字符串计算 具有二进制字符串类型,并且参数不是 十六进制文本、位文本或文本。数值求值 否则发生,参数值转换为 根据需要使用无符号的 64 位整数。NULL
二进制字符串计算生成 与参数值的长度相同。如果参数值 长度不相等,则会发生ER_INVALID_BITWISE_OPERANDS_SIZE错误。如果参数大小超过 511 字节,则会发生ER_INVALID_BITWISE_AGGREGATE_OPERANDS_SIZE错误。数值计算产生无符号 64 位整数。
如果没有匹配的行,BIT_XOR() 返回中性 值(所有位设置为 0)的长度与 参数值。
45.CAN_ACCESS_COLUMN()
仅限内部使用
46.CAN_ACCESS_DATABASE() 仅限内部使用
47.CAN_ACCESS_TABLE() 仅限内部使用
48.CAN_ACCESS_USER() 仅限内部使用
49.CAN_ACCESS_VIEW() 仅限内部使用
50.CASE 案例操作员
case when会用到
sum(case sc.c_id when 1 then sc.s_score end ) 语文
计算语文的分数情况