IGNORE_SPACE SQL 模式可用于修改解析器处理空白敏感的函数名称的方式。以下是我们可以使用 IGNORE_SPACE SQL 模式的情况 -
案例-1 - 当 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);
情况 2 - 当启用 IGNORE_SPACE SQL 模式时
当我们启用此模式时,解析器放宽了函数名和函数名之间不能有空格的要求后面的括号。例如,启用 IGNORE_SPACE SQL 模式后,以下两个函数调用都是合法的 -
Select SUM(Salary) from employee;
Select SUM (Salary) from employee;
但是,在这种情况下,解析器会将函数名称视为保留字。这意味着名称后面的空格不再代表标识符。