# 第 12 章 函数和运算符

目录

12.1 内置函数和运算符参考

12.2 可加载函数参考

12.3 表达式求值中的类型转换

12.4 运算符

12.4.1 运算符优先级

12.4.2 比较函数和运算符

12.4.3 逻辑运算符

12.4.4 赋值运算符

12.5 流量控制函数

12.6 数值函数和运算符

12.6.1 算术运算符

12.6.2 数学函数

12.7 日期和时间函数

12.8 字符串函数和运算符

12.8.1 字符串比较函数和运算符

12.8.2 正则表达式

12.8.3 字符集和函数结果的整理

12.9 MySQL使用什么日历?

12.10 全文搜索功能

12.10.1 自然语言全文搜索

12.10.2 布尔全文搜索

12.10.3 带有查询扩展的全文搜索

12.10.4 全文停用词

12.10.5 全文限制

12.10.6 微调 MySQL 全文搜索

12.10.7 为全文索引添加用户定义的排序规则

12.10.8 ngram 全文解析器

12.10.9 MeCab 全文解析器插件

12.11 强制转换函数和运算符

12.12 XML 函数

12.13 位函数和运算符

12.14 加密和压缩函数

12.15 锁定功能

12.16 信息功能

12.17 空间分析函数

12.17.1 空间函数参考

12.17.2 空间函数的参数处理

12.17.3 从 WKT 值创建几何值的函数

12.17.4 从 WKB 值创建几何值的函数

12.17.5 创建几何值的特定于 MySQL 的函数

12.17.6 几何格式转换函数

12.17.7 几何属性函数

12.17.8 空间算子函数

12.17.9 测试几何对象之间空间关系的函数

12.17.10 空间 Geohash 函数

12.17.11 空间 GeoJSON 函数

12.17.12 空间聚合函数

12.17.13 空间便利函数

12.18 JSON 函数

12.18.1 JSON 函数参考

12.18.2 创建 JSON 值的函数

12.18.3 搜索 JSON 值的函数

12.18.4 修改 JSON 值的函数

12.18.5 返回 JSON 值属性的函数

12.18.6 JSON 表函数

12.18.7 JSON 模式验证函数

12.18.8 JSON 实用函数

12.19 与全局事务标识符 (GTID) 一起使用的函数

12.20 聚合函数

12.20.1 聚合函数描述

12.20.2 GROUP BY 修饰符

12.20.3 MySQL 对 GROUP BY 的处理

12.20.4 功能依赖检测

12.21 窗口函数

12.21.1 窗口功能说明

12.21.2 窗口函数概念和语法

12.21.3 窗函数帧规范

12.21.4 命名窗口

12.21.5 窗口功能限制

12.22 性能模式函数

12.23 内部函数

12.24 杂项功能

12.25 精密数学

12.25.1 数值类型

12.25.2 DECIMAL 数据类型特征

12.25.3 表达式处理

12.25.4 舍入行为

12.25.5 精密数学示例

表达式可以在多个点使用SQL陈述,例如在订购方式要么拥有的条款选择声明,在在哪里a的从句选择,删除, 要么更新声明,或在陈述。可以使用来自多个来源的值来编写表达式,例如文字值、列值、空值、变量、内置函数和运算符、可加载函数和存储函数(一种存储对象)。

本章描述了允许在 MySQL 中编写表达式的内置函数和运算符。有关可加载函数和存储函数的信息,请参阅第 5.7 节,“MySQL 服务器可加载函数”, 和第 25.2 节,“使用存储的例程”.有关描述服务器如何解释对不同类型函数的引用的规则,请参阅第 9.2.5 节,“函数名称解析和解析”.

包含的表达式空值总是产生一个空值值,除非在特定函数或运算符的文档中另有说明。

笔记

默认情况下,函数名和它后面的括号之间不能有空格。这有助于 MySQL 解析器区分函数调用和对碰巧与函数同名的表或列的引用。但是,允许函数参数周围有空格。

告诉 MySQL 服务器接受函数名后的空格,方法是用--sql-mode=IGNORE_SPACE选项。(看第 5.1.11 节,“服务器 SQL 模式”.) 个别客户端程序可以通过使用CLIENT_IGNORE_SPACE选项mysql_real_connect() (opens new window).在任何一种情况下,所有函数名都成为保留字。

为简洁起见,本章中的一些示例显示了mysql缩写形式的程序。而不是以这种格式显示示例:

mysql> SELECT MOD(29,9);
+-----------+
| mod(29,9) |
+-----------+
|         2 |
+-----------+
1 rows in set (0.00 sec)

改为使用此格式:

mysql> SELECT MOD(29,9);
        -> 2