IGNORE_SPACE SQL模式可用于修改解析器如何处理对空格敏感的函数名称。以下是我们可以使用IGNORE_SPACE SQL模式的情况-
禁用IGNORE_SPACE SQL模式后,当名称和后面的括号之间没有空格时,解析器会将名称解释为函数调用。当在非表达式上下文中使用函数名称时,也会发生这种情况。从以下查询可以理解-
mysql> Create table SUM(Id Int); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SUM(Id Int)' at line 1
现在,我们可以使用空格或用引号引起来的名称,以消除该错误并使该名称被视为标识符。以下语句执行相同的操作-
Create table SUM (id int); Create table ‘SUM’(id int); Create table ‘SUM’ (id int);
当我们启用此模式时,解析器放宽了对函数名称和后面的括号之间没有空格的要求。例如,启用IGNORE_SPACE SQL模式后,以下两个函数调用均合法-
Select SUM(Salary) from employee; Select SUM (Salary) from employee;
但是,在这种情况下,解析器将函数名称视为保留字。这意味着名称后的空格不再代表标识符。