如何编写列名中带有空格的SQL查询
创始人
2024-02-20 16:21:44
0

在这篇文章中,我们将学习如何写出列名中带有空格的SQL查询。空格在数据库对象的名称和表的列名的命名规则中受到限制。如果你想在对象名或列名中加入空格,查询和应用代码必须以不同的方式编写。在编写动态SQL查询时,你必须小心和精确。本文解释了我们如何在SQL Server和MySQL中处理带有空白的对象名称和列。

如何在SQL Server中编写列名中有空格的SQL查询

在SQL Server中,我们可以在方括号或小括号中指定带有空格的列名。让我们通过一些例子来理解这个概念。

数据库对象名称中的空格

假设我们想创建一个名为 雇员表.我们创建以下查询来创建该表。

use DemoDatabase
go
create table Employee Table
(
Employee_ID int,
first_name varchar(50),
first_name varchar(50),
Dept_id int,
grade char(5)
)
复制代码

当我们执行该查询时,我们将收到以下错误。

Msg 156, Level 15, State 1, Line 3 Incorrect syntax near the keyword ‘Table’.

为了解决这个错误,我们可以在方括号中指定表名。

use DemoDatabase
go
create table [Employee Table]
(
Employee_ID int,
first_name varchar(50),
last_name varchar(50),
Dept_id int,
grade char(5)
)
复制代码

另外,你也可以在双引号(")之间指定表名。

use DemoDatabase
go
create table "Employee Table"
(
Employee_ID int,
first_name varchar(50),
last_name varchar(50),
Dept_id int,
grade char(5)
)
复制代码

列名中的空格

假设我们想创建一个名为 tblCountries.该表有两列,分别为国家代码国家名称。下面是创建表的语句。

create table tblCountries
(
Country code varchar(15),
Country Name varchar(15)
)
复制代码

为了解决这个错误,我们必须在方括号中指定列名。

use DemoDatabase
go
create table tblCountries
(
[Country code] varchar(15),
[Country Name] varchar(15)
)
复制代码

或者,你也可以在双引号(")之间指定列名。

use DemoDatabase
go
create table tblCountries
(
"Country code" varchar(15),
"Country Name" varchar(15)
)
复制代码

在列的名称中带有空格的SELECT语句

你可以使用方括号来填充名称中带有空格的列。假设我们想从tblCountries表中获得国家代码国家名称列。

use DemoDatabase
go
select  country code, country name
from tblCountries
复制代码

SELECT语句返回一个错误。

Msg 207, Level 16, State 1, Line 2Invalid column name ‘country’.Msg 207, Level 16, State 1, Line 3Invalid column name ‘country’.
复制代码

我们必须在方括号或双引号中指定列。查询应该写成如下。

use DemoDatabase
go
/*Query with square bracket*/
select  [country code], [country name]
from tblCountries
Go
/*Query with double quotes*/
select  "country code", "country name"
from tblCountries
Go
复制代码

在列名中带有空格的DML SQL查询

当我们运行INSERT、UPDATE和DELETE语句时,我们必须使用方括号或双引号来处理带有空格的列名。在下面的例子中,我在tblCountries中插入一些记录。该表有国家代码和国家名称两列。

INSERT INTO tblcountries([country code],[country name])VALUES      ('AUS','Austrelia')
复制代码

假设我们想用UPDATE语句将国名从印度改为Bharat

UPDATE tblcountries
SET    [country name] = 'Bharat'
WHERE  [country name] = 'India'
复制代码

假设我们想用DELETE语句删除代码为AUS的国家。

DELETE FROM tblcountriesWHERE  [country code] = 'AUS'
复制代码

现在,让我们了解如何在MySQL Server 8.0中编写列名中带有空格的SQL查询。

如何在MySQL中写出列名中带有空格的SQL查询

数据库对象名称中的空格

假设我们想创建一个名为电影列表的表。我们运行以下查询来创建该表

create table film list
(
film_id int,
title varchar(500),
Certificate varchar(10),
duration int,
rental numeric(10,2)
)
复制代码

当我们执行该查询时,我们将收到以下错误。

error 1064 (42000):你的SQL语法有误;请查看与你的MySQL服务器版本相对应的手册,了解在'list'附近使用的正确语法。

为了解决这个错误,我们可以在后缀中指定表名(`)。CREATE TABLE语句可以写成以下样子。

create table `film list`
(
film_id int,
title varchar(500),
Certificate varchar(10),
duration int,
rental numeric(10,2)
)
复制代码

列名中的空格

假设我们想创建一个名为 tblmultiplex.该表有两列,分别为多路影院名称影院总屏幕。下面是创建表的语句。

create table tblmultiplex
(
ID int,
Multiplex name varchar(500),
Total Cinema screen int,
Address varchar(500),
CityID int
)
复制代码

当我们执行查询时,我们会遇到以下错误。

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘name varchar(500),

为了解决这个错误,我们可以使用反斜线。创建表的语句应该写成以下样子。

create table tblmultiplex
(
ID int,
`Multiplex name` varchar(500),
`Total Cinema screen` int,
Address varchar(500),
CityID int
)
复制代码

列名中带有空格的SELECT语句

你可以使用反符号来填充名称中带有空格的列。假设我们想从tblmultiplex表中填入复式影院名称总影院屏幕列。

select multiple name, Total Cinema Screen from tblmultiplex

我们将遇到以下错误。

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘screen from tblmultiplex’ at line 1

让我们使用反斜线来写SELECT查询。它应该写成以下样子。

select `multiple name`, `Total Cinema Screen` from tblmultiplex
复制代码

正如你所看到的,该查询被成功执行。

列名中带有空格的DML SQL查询

当我们在MySQL服务器上运行INSERT、UPDATE和DELETE语句时,我们必须使用背号来处理带有空格的列名。在下面的例子中,我在tblmultiplex表中插入一些记录。该表有多路电视名称和总电影屏幕列。

insert into tblmultiplex (ID, `multiplex name`, `Total cinema screen`, address, CityID )
values
(2,'Big Cinema Inc',3,'Ashram Road', 1);insert into tblmultiplex (ID, `multiplex name`, `Total cinema screen`, address, CityID )
values
(3,'Wide Angal Mehsana',3,'Near Balaji township', 2);
复制代码

假设我们想用UPDATE语句将多厅影院的名称从Big Cinema Inc改为Cinemax

UPDATE tblmultiplex
SET    `multiplex name` = 'Cinemax'
WHERE  `multiplex name` = 'Big Cinema Inc'
复制代码

假设我们想用DELETE语句删除名称为PVR影院的多路影院的详细信息。

delete from tblmultiplex where `multiplex name`='PVR Multiplex';
复制代码

总结

在这篇文章中,我们学习了如何写一个列名中带有空格的SQL查询。我已经涵盖了以下内容。

  1. 创建一个SQL Server和MySQL表与。
    1. 表名中的空白
    2. 表的列名中的空格
  2. 如何在有空格的列上运行DML语句。DML语句在SQL服务器和MySQL服务器上执行。

相关内容

热门资讯

受权发布|全民阅读促进条例 新华社北京12月16日电 全民阅读促进条例 第一章 总则 第一条 为了促进全民阅读,推进书香社会建设...
达安基因:不涉及违反外商投资相... 证券之星消息,达安基因(002030)12月16日在投资者关系平台上答复投资者关心的问题。 投资者提...
新华社权威快报|《全民阅读促进... 《全民阅读促进条例》12月16日公布,自2026年2月1日起施行。条例共6章45条,分为总则、全民阅...
长春汽开区法院:先行调解化干戈... 近日,一场因学生课堂晕倒受伤引发的赔偿纠纷,让家长、老师、学校及保险公司四方陷入僵局。面对数万元的赔...
同仁堂为何反手起诉自家子公司? 文丨郭小兴 编辑丨百进 来源丨正经社(ID:zhengjingshe) (本文约为800字) 百年...
贵阳公积金多项惠民政策延续至2... 为持续释放政策红利,切实惠及广大缴存职工,进一步支持其刚性和改善性住房需求,助推贵阳贵安房地产市场高...
精准对接需求,法律服务“零距离... “以前觉得法律离我们普通居民挺远的,现在社区把服务送到家门口,连房产继承这样的难题都有律师面对面帮忙...
郑州联勤保障中心刚性落实规章破... ■本报特约记者 刘会宾 记者 孙兴维 日前,收到郑州联勤保障中心某采购服务站发来的通知后,某部保...
达安基因:不涉及违反外商投资相... 有投资者在互动平台向达安基因提问:“董秘您好,贵司从事外商投资负面清单中外商禁止投资的业务,但是贵司...
局势闹大了!中企承建大桥被炸,... 据环球网报道,12月14日的泰国湾上空,弥漫的不只是硝烟,还有特朗普“和平神话”破碎的尴尬。就在这位...