SQLite中SELECT查询含&符号的表名与列名如何转义?
SQLite中转义含&符号的表名/列名方法
在SQLite中,&属于逻辑运算符(逻辑与),直接写jack&jill会被解析为两个列名jack和jill进行逻辑运算,因此会提示列不存在。要正确引用含&的标识符,有两种通用解决方法:
方法1:用双引号包裹标识符
这是SQL标准的标识符引用方式,SQLite完全支持,适用于列名、表名等所有标识符:
select "jack&jill" from ( select 'test' as "jack&jill" )
方法2:用方括号包裹标识符
这是兼容部分其他数据库(如MySQL、SQL Server)的写法,SQLite同样支持:
select [jack&jill] from ( select 'test' as [jack&jill] )
表名含&符号的处理
如果表名包含&,处理逻辑和列名完全一致,只需用双引号或方括号包裹表名即可:
-- 双引号方式查询含&的表 select * from "JACK&JILL_TABLE"; -- 方括号方式查询含&的表 select * from [JACK&JILL_TABLE];
注:除了&,只要标识符包含空格、特殊符号或与SQL关键字重名,都可以用这两种方法处理。
内容的提问来源于stack exchange,提问作者Lee Murray
相关产品推荐
相关产品推荐

