Ben*_*rey 14 mysql sql sql-server-2008
我以为会有另外一个问题,但我无法找到.在使用PHP的MySQL中,我通常使用反引号封装我的字段名称以掩盖任何保留的名称或字符.但是,我的一位同事指出,这也可以使用方括号来实现.排除反引号与SQL服务器不兼容的事实(显然),有什么区别?我应该使用哪个?
SELECT `username` FROM `users`
SELECT [username] FROM [users]
Run Code Online (Sandbox Code Playgroud)
Mic*_*ski 24
SQL Server/T-SQL使用方括号(以及MS Access),而MySQL使用反引号.
据我所知,可以在文档中露面,或在测试中使用,方括号是不是有效的MySQL.因此,如果您需要在SQL Server中将关键字作为表名[]
附加,请使用,并在MySQL中使用反引号或ANSI_QUOTES
启用时使用双引号.
标识符引号字符是反引号("`"):
mysql> SELECT * FROM `select` WHERE `select`.id > 100;
Run Code Online (Sandbox Code Playgroud)
如果启用了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)
Run Code Online (Sandbox Code Playgroud)
两者都是引用对象名称的非标准方式,这些对象名称应区分大小写,是保留字或包含否则不允许的特殊字符.
这种标识符的标准引用字符是双引号.要与ANSI SQL兼容,您应该使用它们:
SELECT "username" FROM "users"
Run Code Online (Sandbox Code Playgroud)
但请注意,引用的标识符符合ANSI SQL的区分大小写.但是,两种提到的产品都不符合这一要求.此类标识符是否区分大小写取决于MySQL中的多个(不同)配置设置和MS SQL Server中的数据库排序规则.
两个DBMS都可以(并且在我看来应该)配置为接受ANSI标准引号字符.
我强烈建议避免任何需要引用的对象名称.使用不需要引用的标识符可以为您节省很多麻烦.
归档时间: |
|
查看次数: |
11547 次 |
最近记录: |