SQL中的单引号和双引号有什么区别?

Vin*_*eet 206 sql database quotes

SQL中的单引号和双引号有什么区别?

OMG*_*ies 141

单引号用于指示SQL中字符串的开头和结尾.双引号通常不在SQL中使用,但可能因数据库而异.

坚持使用单引号.

无论如何,这是主要用途.您可以对列别名使用单引号 - 您希望在应用程序代码中引用的列名称不是在数据库中实际调用列的名称.例如:PRODUCT.id将更具可读性product_id,因此您使用以下任一方法:

  • SELECT PRODUCT.id AS product_id
  • SELECT PRODUCT.id 'product_id'

要么在Oracle,SQL Server,MySQL中运行......但我知道有些人说使用单引号方法时TOAD IDE似乎有些悲痛.

当列别名包含空格字符时,您必须使用单引号,例如product id,但不建议将列别名设为多个单词.

  • 我总是弄错了,直到我意识到一个简单的规则:[S]单引号为[S] trings,[D]双引号为[D] atabase (110认同)
  • 双引号通常用于对象名称(例如列名"名字").这是SQL-92标准的一部分. (27认同)
  • 不,我的意思是列名,但它也涉及别名.因为SQL-92标准,我建议对别名和带有不寻常字符的名称使用双引号.`SELECT*FROM USERS'Users'`在SQL Server中不起作用,但`SELECT*FROM USERS"Users"`的确如此. (18认同)
  • `SELECT PRODUCT.id'product_id'`将无法在Oracle中运行.对于字符文字,单引号仅****.它们不能用于(标准)SQL中的标识符(尽管某些DBMS在引用标识符时只是忽略了SQL标准) (6认同)
  • 您应该使用双引号作为标识符.单引号违反标准. (4认同)
  • 我认为这有助于增加这个答案,"`和```在语言方面看起来是一样的,使用其中一个或另一个是常规问题.我来到这里仔细检查"" `不预处理字符串,因为在某些语言中,单引号和双引号的处理方式不同(如Php或其他).答案并没有直接明确,但更多的暗示,我认为这将有助于直接将其添加到答案中.+1无论如何 (2认同)

Bil*_*win 63

单引号分隔字符串常量或日期/时间常量.

双引号分隔标识符,例如表名或列名.这通常仅在您的标识符不符合简单标识符的规则时才需要.

也可以看看:

您可以根据ANSI标准使MySQL使用双引号:

SET GLOBAL SQL_MODE=ANSI_QUOTES
Run Code Online (Sandbox Code Playgroud)

您可以使Microsoft SQL Server根据ANSI标准使用双引号:

SET QUOTED_IDENTIFIER ON
Run Code Online (Sandbox Code Playgroud)


Ple*_*rds 63

两个简单的规则让我们记住在哪种情况下使用什么:

  • [ S ]单引号适用于[ S ] trings; [ D ]双引号用于[ D ] atabase标识符;
  • `符号是一样的"符号,你可以使用"启用ANSI_QUOTES.

  • 为了澄清,反引号(`)可用于分隔标识符,无论是否启用ANSI_QUOTES,但如果启用了ANSI_QUOTES,则"不能使用双引号引用文字字符串,因为它被解释为标识符." ([源(https://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sqlmode_ansi_quotes)).(这一切都假设你在谈论MySQL,请注意.) (4认同)
  • 但 [**S**] 单引号也适用于 [**D**]ate 文字。:-/ (3认同)
  • 日期文字在大多数 DBMS 中算作字符串 (2认同)

Mar*_*rkR 35

在ANSI SQL中,双引号引用对象名称(例如表),它们允许它们包含其他方式不允许的字符,或者与保留字相同(实际上避免这样).

单引号用于字符串.

但是,MySQL没有注意到标准(除非它的SQL_MODE被更改)并且允许它们可互换地用于字符串.

此外,Sybase和Microsoft还使用方括号进行标识符引用.

所以这是一个特定的供应商.

其他数据库,如Postgres和IBM实际上遵守ansi标准:)

  • MySql使用反引号`进行标识符引用.(只是为了完成) (4认同)

gue*_*tli 8

我用这个助记符:

  • 单引号用于字符串(一件事)
  • 双引号用于表名和列名(两件事)

根据规格,这不是100%正确,但这个助记符有助于我(人类).

  • ``人类```` 与使用 SQL 的其他动物不同。:D (4认同)