一尘不染

SQL语句中的反引号和方括号有什么区别?

mysql

我以为还会有另一个问题,但我找不到。在使用PHP的MySQL中,我通常用反引号封装字段名,以掩盖任何保留的名称或字符。但是,我的一位同事指出,这也可以使用方括号来实现。排除反引号与SQL
Server不兼容的事实(显然),有什么区别?我应该使用哪个?

SELECT `username` FROM `users`
SELECT [username] FROM [users]

阅读 726

收藏
2020-05-17

共1个答案

一尘不染

SQL Server / T-SQL使用方括号(以及MS Access),而MySQL使用反引号。

据我所知,可以在文档中露面,或在测试中使用,方括号是
不是 有效的MySQL。因此,如果需要在SQL
Server中将关键字作为表名括起来,请使用[],而在MySQL中请使用反引号,或在ANSI_QUOTES启用时使用双引号。

从文档中:

标识符引号是反引号(“`”):

mysql> SELECT * FROM `select` WHERE `select`.id > 100;

如果启用了ANSI_QUOTES SQL模式,则也可以在双引号中引起标识符的引用:

mysql> CREATE TABLE "test" (col INT);
ERROR 1064: You have an error in your SQL syntax...
mysql> SET sql_mode='ANSI_QUOTES';
mysql> CREATE TABLE "test" (col INT);
Query OK, 0 rows affected (0.00 sec)
2020-05-17