<分区>
MySQL 有函数 和运算符。但是,对于任意关键字是函数还是运算符,并不清楚。
例如,我相信ASCII()
是一个函数(它出现在手册的 string functions 部分)。然而,LIKE
也出现在那里,但它似乎不是一个函数;例如,由于语法不强制 (...)
在LIKE
之后关键字,以及 docs提一下
By default, there must be no whitespace between a function name and the parenthesis following it.
在某些情况下,它是那么清楚。例如,IN
关键字出现在 Comparison Functions and Operators手册的部分(一个未公开的部分名称),它以名称出现在那里 IN()
(好像它是一个函数),但示例显示 SELECT 2 IN (0,3,5,7);
, 这暗示这是一个运算符(注意关键字后面的空格)。
在同一部分中有 INTERVAL()
.仔细阅读该关键字的描述中显示以下行:
It is required that
N1 < N2 < N3 < ... < Nn
for this function to work correctly.
这暗示这确实是一个函数,而不是一个运算符。 LEAST()
,也出现在那里,没有提到它是函数还是运算符。
我的问题如下:
- MySQL 中函数 和运算符 的概念之间是否存在内部差异?
- 有没有办法在给定关键字的情况下判断它是否是运算符的函数?
- 根据上下文,关键字可以同时是两者吗?例如,我知道有些关键字既可以是函数又可以是类型。
我想知道,既是为了理解MySQL的抽象结构,也是为了用它来进行语法高亮。