在SQL标识符中使用特殊字符的优缺点是什么?

时间:2016-05-21 02:54:19

标签: sql special-characters

我应该避免使用SQL表名和列名中的“éáç”等特殊字符吗?

使用特殊字符的优缺点是什么?

1 个答案:

答案 0 :(得分:1)

你可以猜到,有利有弊。这或多或少是一个主观问题。

SQL(与大多数编程语言不同)允许在表或列标识符中使用特殊字符,空格,标点符号或保留字。

人们可以选择使用适合自己母语的字符,这很不错。

特别是在使用最接近的ASCII字符拼写时,单词会明显改变其含义的情况:例如añoano

但缺点是,如果你这样做,你必须使用"分隔标识符"每次使用特殊字符引用表时。在标准SQL中,分隔标识符使用双引号。

SELECT * FROM "SELECT"

这实际上没问题!如果要将SQL保留字用作表名,则可以执行此操作。但它可能会导致代码的一些读者感到困惑。

同样,如果使用特殊的非ASCII字符,可能会使说英语的程序员难以维护代码,因为他们不熟悉键入这些特殊字符的键序列。或者他们可能会忘记他们必须划分表名。

SELECT * FROM "año"

然后是非标准的分隔标识符。 Microsoft默认使用方括号:

SELECT * FROM [año]

MySQL默认使用反向标记:

SELECT * FROM `año`

虽然如果您启用某些选项,两者都可以使用标准双引号作为标识符分隔符,但您无法始终依赖它,如果该选项被禁用,您的代码将停止工作。因此,不幸的是,微软和MySQL的用户仍然使用非标准分隔符。

如果您坚持使用ASCII字符,那么在某些方面维护代码会更简单。但是也有合理的理由想要使用特殊字符。