Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我如何知道哪个是函数,哪个是运算符?_Mysql_Documentation_Keyword - Fatal编程技术网

Mysql 我如何知道哪个是函数,哪个是运算符?

Mysql 我如何知道哪个是函数,哪个是运算符?,mysql,documentation,keyword,Mysql,Documentation,Keyword,MySQL既有函数也有操作符。但是,对于任意关键字,它是函数还是运算符都不是很清楚 例如,我相信ASCII()是一个函数(它出现在手册的一节中)。然而,LIKE也出现在那里,它似乎不是一个函数;例如,由于语法不强制(…)在LIKE关键字之后,并且 默认情况下,函数名和它后面的括号之间不能有空格 在某些情况下,这是显而易见的。例如,中的关键字出现在手册的章节中(一个非公开章节名称),它与中的名称一起出现在那里()(好像它是一个函数),但示例显示选择2 IN(0,3,5,7),提示这是一个运算符(注

MySQL既有函数也有操作符。但是,对于任意关键字,它是函数还是运算符都不是很清楚

例如,我相信
ASCII()
是一个函数(它出现在手册的一节中)。然而,
LIKE
也出现在那里,它似乎不是一个函数;例如,由于语法不强制
(…)
LIKE
关键字之后,并且

默认情况下,函数名和它后面的括号之间不能有空格

在某些情况下,这是显而易见的。例如,中的
关键字出现在手册的章节中(一个非公开章节名称),它与
中的名称一起出现在那里()
(好像它是一个函数),但示例显示
选择2 IN(0,3,5,7),提示这是一个运算符(注意关键字后面的空格)

在同一节中有
INTERVAL()
。仔细阅读此关键字说明中的以下行:

要求
N1
此功能才能正常工作

这暗示这确实是一个函数,而不是一个运算符
LEAST()
,也出现在那里,没有提到它是函数还是运算符


我的问题如下:

  • MySQL中函数和操作符的概念有什么内在区别吗
  • 给定一个关键字,有没有办法确定它是否是运算符的函数
  • 根据上下文,关键字可以同时为两者吗?例如,我知道有些关键字既可以是函数也可以是类型
我想知道,为了理解MySQL的抽象结构,也为了使用它进行语法突出显示。

MySQL提供了一个“非类型”操作符列表

基本上,一个函数后面是一系列用括号括起来的参数。即使是不带参数的函数,如
now()
也需要括号

另一方面,操作符是MySQL查询语言语法的一部分。解析器知道这些信息,并识别它们。运算符通常使用“中缀”表示法,其中运算符出现在参数之间。但是,这不是必需的(只考虑一元减法运算符)。 粗略地看一下操作符列表,就会发现有些东西既可以是操作符,也可以是函数。例如
mod()

对我来说,最重要的区别在于用户可以定义函数。但是用户还不能定义操作符。与面向对象语言不同,SQL不提供为运算符提供附加定义的方法


而且,出于您的目的,您应该仔细阅读手册页面,以获得您关心的事项列表。

谢谢;但是,
中的
不会出现在您链接的页面中,正如我所写的,它似乎是一个操作符。关于那个关键词有什么特别的猜测吗?@Bach。它确实出现在一个更具体的列表()中。但是这个列表同时适用于运算符和函数,从而得出结论,它是一个函数,而在
中它不是。