SQL中单引号和双引号的区别是什么?
在SQL中,单引号用于表示字符串的开始和结束。双引号通常不用于SQL中,但这可能因数据库而异。
坚持使用单引号。
这是最主要的用途。您可以使用单引号作为列别名—您希望在应用程序代码中引用的列名与该列在数据库中的实际名称不同。例如:PRODUCT。Id作为product_id可读性更好,所以可以使用以下任意一个:
选择产品。id应用服务器product_id 选择产品。id“product_id”
这两种方法都适用于Oracle、SQL Server、MySQL……但我知道有些人说TOAD IDE在使用单引号方法时似乎有些令人悲伤。
当列别名包含空格字符时,您必须使用单引号,例如product id,但不建议使用一个以上的列别名。
在ANSI SQL中,双引号引用对象名称(例如表),允许它们包含其他不允许的字符,或与保留字相同(真的要避免这种情况)。
单引号用于字符串。
然而,MySQL并不关心这个标准(除非它的SQL_MODE被改变了),并且允许它们互换地用于字符串。
此外,Sybase和Microsoft也使用方括号作为标识符引号。
所以这有点特定于供应商。
其他数据库,如Postgres和IBM实际上坚持ansi标准:)
单引号分隔字符串常量或日期/时间常量。
双引号分隔标识符,例如表名或列名。这通常只在标识符不符合简单标识符规则时才有必要。
参见:
不同的数据库使用不同的名称引用吗?
你可以让MySQL使用ANSI标准的双引号:
SET GLOBAL SQL_MODE=ANSI_QUOTES
你可以让Microsoft SQL Server使用ANSI标准的双引号:
SET QUOTED_IDENTIFIER ON
一个简单的规则让我们记住在什么情况下使用什么:
[S]单引号用于[S]字符串字面量(日期字面量也是字符串); [D]双引号是数据库标识符;
例子:
INSERT INTO "USERS" ("LOGIN", "PASSWORD", "DT_BIRTH") VALUES ('EDUARDO', '12345678', '1980-09-06');
在MySQL和MariaDB中,'(反标记)符号与"符号相同。注意,当SQL_MODE启用了ANSI_QUOTES时,不能使用“”作为文本字符串。
区别在于它们的用法。单引号主要用于WHERE、HAVING和一些内置SQL函数(如CONCAT、STRPOS、POSITION等)中引用字符串。
当你想使用一个中间有空格的别名时,你可以使用双引号来引用这个别名。
例如
(select account_id,count(*) "count of" from orders group by 1)sub
下面是来自订单表的子查询,其中account_id作为外键,我正在聚合以了解每个帐户下了多少订单。在这里,为了方便起见,我给一列取了任意随机名称“count of”。
现在让我们编写一个外部查询来显示“count of”大于20的行。
select "count of" from
(select account_id,count(*) "count of" from orders group by 1)sub where "count of" >20;
您也可以将相同的情况应用于公共表表达式。
要记住两件事:
单个Qutoes('):字符串或文本
select * from employees where room_name = 'RobinCapRed';
其中RobinCapRed是一个字符串或文本。
双引号("):列名或表名
select "first_name" from "employees";
where first_Name是员工表的列名
推荐文章
- 选项(RECOMPILE)总是更快;为什么?
- 设置数据库从单用户模式到多用户
- oracle中的RANK()和DENSE_RANK()函数有什么区别?
- 的类型不能用作索引中的键列
- SQL逻辑运算符优先级:And和Or
- 如何检查一个表是否存在于给定的模式中
- 添加一个复合主键
- 如何在SQL Server Management Studio中查看查询历史
- 可以为公共表表达式创建嵌套WITH子句吗?
- 什么时候我需要在Oracle SQL中使用分号vs斜杠?
- SQL Server的NOW()?
- 在SQL中,count(列)和count(*)之间的区别是什么?
- 在SQL Server中截断(不是四舍五入)小数位
- 仅在Datetime列上按日期分组
- PostgreSQL通配符LIKE用于单词列表中的任何一个