【发布时间】:2014-04-28 14:00:15
【问题描述】:
MySQL 同时具有函数和运算符。但是,对于任意关键字是函数还是运算符,并不清楚。
例如,我相信ASCII() 是一个函数(它出现在手册的string functions 部分)。但是,LIKE 也出现在那里,它似乎不是一个函数;例如,由于语法不会在 LIKE 关键字之后强制使用 (...),而 docs 提到了这一点
默认情况下,函数名和后面的括号之间不能有空格。
在某些情况下,这很清楚。例如,IN 关键字出现在手册的 Comparison Functions and Operators 部分(非公开的部分名称)中,并以名称 IN() 出现在那里(好像它是一个函数),但示例显示SELECT 2 IN (0,3,5,7);,暗示这是一个运算符(注意关键字后面的空格)。
在同一部分有INTERVAL()。仔细阅读会发现这个关键字的描述中有以下一行:
此功能需要
N1 < N2 < N3 < ... < Nn才能正常工作。
这暗示这确实是一个函数,而不是一个运算符。 LEAST(),也出现在那里,没有提到是函数还是运算符。
我的问题如下:
- function 和 operator 在 MySQL 中的概念有什么内在区别吗?
- 有没有办法确定给定关键字,它是否是运算符的函数?
- 根据上下文,一个关键字可以同时是两者吗?例如,我知道有些关键字既可以是函数也可以是类型。
我想知道这既是为了理解 MySQL 的抽象结构,也是为了将它用于语法高亮。
【问题讨论】:
标签: mysql documentation keyword