创建含空格的表名和列名时触发语法错误:Incorrect syntax near '`'
解决含空格标识符的SQL创建表报错问题
嘿,这个坑我之前踩过!你遇到的Incorrect syntax near ''`报错,核心原因是不同数据库系统对带空格的表名、列名这类标识符的转义规则完全不一样,咱们对应不同情况来调整:
1. 先明确你的数据库类型,对应修改转义符号
- MySQL/MariaDB:反引号`是正确的语法,但如果还是报错,检查下是不是不小心输入了中文的反引号(输入法切换时偶尔会踩这个坑),或者你的SQL客户端有没有特殊配置过滤了反引号。正确的SQL写法如下:
create table `Table Name` ( `User id` int, User_name varchar(100), Buy_dt DATE, Sell_dt DATE ) - SQL Server:它不支持反引号,得用**方括号[]**来包裹带空格的标识符,修改后的SQL:
create table [Table Name] ( [User id] int, User_name varchar(100), Buy_dt DATE, Sell_dt DATE ) - Oracle/PostgreSQL:这类数据库用**双引号""**来转义,注意Oracle会严格保留引号内的大小写,后续查询也要对应使用相同的大小写:
create table "Table Name" ( "User id" int, User_name varchar(100), Buy_dt DATE, Sell_dt DATE )
2. 额外小建议
虽然数据库允许标识符带空格,但实际开发里尽量别这么做——后续写查询、关联表的时候每次都要加转义符号,不仅麻烦还容易出错。换成下划线命名(比如table_name、user_id)会更符合开发规范,也省心很多~
内容的提问来源于stack exchange,提问作者noob
相关产品推荐
相关产品推荐

