《SQL初学者指南(第2版)》——2.5 带有空格的列名

简介:

本节书摘来自异步社区出版社《SQL初学者指南(第2版)》一书中的第2章,第2.6节,作者:【美】Larry Rockoff,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.5 带有空格的列名

如果列的名称中有空格,该怎么办?例如,假设LastName列的列名用的是Last Name(两个单词间插入了一个空格)。显然,下面这条语句是无效的:

SELECT
Last Name
FROM Customers

因为Last和Name不是列名,所以这条语句被认为是无效的。况且,即使Last和Name是正确的列名,它们之间也需要用逗号隔开。解决方案就是,用特殊的字符把所有包含空格的列名括起来。根据你所使用的数据库,这里所采用的字符也不同。对于Microsoft SQL Server,使用的字符是方括号,正确的语法如下所示:

SELECT
[Last Name]
FROM Customers

关于语法,还有另外一点要注意,就像关键字不区分大小写一样,表名和列名也不区分大小写。例如,前面的示例等同于:

select
[last name]
from customers

为了清晰起见,在本书中,我们会把所有的关键字全部用大写形式印刷,把表名和列名以首字母大写的形式印刷,但是请注意,并不是一定要这么做。

数据库的差异:
 

MySQL和Oracle 在MySQL中,用重音符(')把包含空格的列名括起来。语法如下所示: SELECT Last Name FROM Customers; 在Oracle中,用双引号把带有空格的列名括起来。语法如下所示: SELECT "Last Name" FROM Customers; 此外,与Microsoft SQL Server和MySQL不同的是,在Oracle中,用双引号括起来的列名是区分大小写的。这就意味着,上述的语句不能等同于: SELECT "LAST NAME" FROM Customers;

相关文章
|
2月前
|
SQL 数据库
20、绕过去除and、or、union select、空格的sql注入
20、绕过去除and、or、union select、空格的sql注入
32 0
|
5月前
|
SQL 关系型数据库 MySQL
mysql中执行 sql 语句报语法错误引出的代码空格问题
根据报错提示 sql 语法错误,错误状态码 1064,网上很多人说是使用了 mysql 保留关键字,没用反单引号``包起来,或者普通字符串使用了反单引号这些...反正大部分都是说引号这块出了问题,但一遍遍地检查确实又都没发现问题
62 1
|
SQL 数据库
20、绕过去除and、or、union select、空格的sql注入
20、绕过去除and、or、union select、空格的sql注入
155 0
20、绕过去除and、or、union select、空格的sql注入
|
SQL 数据库
SQL去除数据库表中tab、空格、回车符等特殊字符的解决方法
原文:SQL去除数据库表中tab、空格、回车符等特殊字符的解决方法 按照ASCII码, SELECT char(64) 例如64 对应 @,则 SELECT REPLACE('abc@qq.
3602 0
|
SQL 数据库 索引
MS SQL SERVER搜索某个表的主键所在的列名
原文:MS SQL SERVER搜索某个表的主键所在的列名   SELECT SYSCOLUMNS.name  FROM SYSCOLUMNS,SYSOBJECTS,SYSINDEXES,SYSINDEXKEYS   WHERE SYSCOLUMNS.
1039 0
|
SQL 数据格式 XML
SQL Server Update 所有表的某一列(列名相同,类型相同)数值
DECLARE @sql VARCHAR(5000); WITH T AS (SELECT SchemaName = c.TABLE_SCHEMA, TableName = c.
1696 0