# 第 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 ```