# 第 12 章 函数和运算符

**目录**

[12.1 内置函数和运算符参考](built-in-function-reference.html)
[12.2 可加载函数参考](loadable-function-reference.html)
[12.3 表达式求值中的类型转换](type-conversion.html)
[12.4 运算符](non-typed-operators.html)
[12.4.1 运算符优先级](operator-precedence.html)
[12.4.2 比较函数和运算符](comparison-operators.html)
[12.4.3 逻辑运算符](logical-operators.html)
[12.4.4 赋值运算符](assignment-operators.html)
[12.5 流量控制函数](flow-control-functions.html)
[12.6 数值函数和运算符](numeric-functions.html)
[12.6.1 算术运算符](arithmetic-functions.html)
[12.6.2 数学函数](mathematical-functions.html)
[12.7 日期和时间函数](date-and-time-functions.html)
[12.8 字符串函数和运算符](string-functions.html)
[12.8.1 字符串比较函数和运算符](string-comparison-functions.html)
[12.8.2 正则表达式](regexp.html)
[12.8.3 字符集和函数结果的整理](string-functions-charset.html)
[12.9 MySQL使用什么日历？](mysql-calendar.html)
[12.10 全文搜索功能](fulltext-search.html)
[12.10.1 自然语言全文搜索](fulltext-natural-language.html)
[12.10.2 布尔全文搜索](fulltext-boolean.html)
[12.10.3 带有查询扩展的全文搜索](fulltext-query-expansion.html)
[12.10.4 全文停用词](fulltext-stopwords.html)
[12.10.5 全文限制](fulltext-restrictions.html)
[12.10.6 微调 MySQL 全文搜索](fulltext-fine-tuning.html)
[12.10.7 为全文索引添加用户定义的排序规则](full-text-adding-collation.html)
[12.10.8 ngram 全文解析器](fulltext-search-ngram.html)
[12.10.9 MeCab 全文解析器插件](fulltext-search-mecab.html)
[12.11 强制转换函数和运算符](cast-functions.html)
[12.12 XML 函数](xml-functions.html)
[12.13 位函数和运算符](bit-functions.html)
[12.14 加密和压缩函数](encryption-functions.html)
[12.15 锁定功能](locking-functions.html)
[12.16 信息功能](information-functions.html)
[12.17 空间分析函数](spatial-analysis-functions.html)
[12.17.1 空间函数参考](spatial-function-reference.html)
[12.17.2 空间函数的参数处理](spatial-function-argument-handling.html)
[12.17.3 从 WKT 值创建几何值的函数](gis-wkt-functions.html)
[12.17.4 从 WKB 值创建几何值的函数](gis-wkb-functions.html)
[12.17.5 创建几何值的特定于 MySQL 的函数](gis-mysql-specific-functions.html)
[12.17.6 几何格式转换函数](gis-format-conversion-functions.html)
[12.17.7 几何属性函数](gis-property-functions.html)
[12.17.8 空间算子函数](spatial-operator-functions.html)
[12.17.9 测试几何对象之间空间关系的函数](spatial-relation-functions.html)
[12.17.10 空间 Geohash 函数](spatial-geohash-functions.html)
[12.17.11 空间 GeoJSON 函数](spatial-geojson-functions.html)
[12.17.12 空间聚合函数](spatial-aggregate-functions.html)
[12.17.13 空间便利函数](spatial-convenience-functions.html)
[12.18 JSON 函数](json-functions.html)
[12.18.1 JSON 函数参考](json-function-reference.html)
[12.18.2 创建 JSON 值的函数](json-creation-functions.html)
[12.18.3 搜索 JSON 值的函数](json-search-functions.html)
[12.18.4 修改 JSON 值的函数](json-modification-functions.html)
[12.18.5 返回 JSON 值属性的函数](json-attribute-functions.html)
[12.18.6 JSON 表函数](json-table-functions.html)
[12.18.7 JSON 模式验证函数](json-validation-functions.html)
[12.18.8 JSON 实用函数](json-utility-functions.html)
[12.19 与全局事务标识符 (GTID) 一起使用的函数](gtid-functions.html)
[12.20 聚合函数](aggregate-functions-and-modifiers.html)
[12.20.1 聚合函数描述](aggregate-functions.html)
[12.20.2 GROUP BY 修饰符](group-by-modifiers.html)
[12.20.3 MySQL 对 GROUP BY 的处理](group-by-handling.html)
[12.20.4 功能依赖检测](group-by-functional-dependence.html)
[12.21 窗口函数](window-functions.html)
[12.21.1 窗口功能说明](window-function-descriptions.html)
[12.21.2 窗口函数概念和语法](window-functions-usage.html)
[12.21.3 窗函数帧规范](window-functions-frames.html)
[12.21.4 命名窗口](window-functions-named-windows.html)
[12.21.5 窗口功能限制](window-function-restrictions.html)
[12.22 性能模式函数](performance-schema-functions.html)
[12.23 内部函数](internal-functions.html)
[12.24 杂项功能](miscellaneous-functions.html)
[12.25 精密数学](precision-math.html)
[12.25.1 数值类型](precision-math-numbers.html)
[12.25.2 DECIMAL 数据类型特征](precision-math-decimal-characteristics.html)
[12.25.3 表达式处理](precision-math-expressions.html)
[12.25.4 舍入行为](precision-math-rounding.html)
[12.25.5 精密数学示例](precision-math-examples.html)

[](<>)[](<>)[](<>)

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

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

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

笔记

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

告诉 MySQL 服务器接受函数名后的空格，方法是用[`--sql-mode=IGNORE_SPACE`](server-options.html#option_mysqld_sql-mode)选项。（看[第 5.1.11 节，“服务器 SQL 模式”](sql-mode.html).) 个别客户端程序可以通过使用`CLIENT_IGNORE_SPACE`选项[`mysql_real_connect()`](https://dev.mysql.com/doc/c-api/8.0/en/mysql-real-connect.html).在任何一种情况下，所有函数名都成为保留字。

为简洁起见，本章中的一些示例显示了[**mysql**](mysql.html)缩写形式的程序。而不是以这种格式显示示例：

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

改为使用此格式：

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