如何在SQL的select、where子句中使用以下划线开头的列名
SQL中下划线开头列的调用处理方案
错误原因
在绝大多数SQL方言的语法规则中,下划线开头的列名属于非标准标识符,直接在SELECT、WHERE等子句中书写时,会被解析器判定为语法错误,无法被正确识别为列名。
通用解决方案
用对应数据库支持的标识符引用符包裹下划线开头的列名即可正常调用,不同数据库的处理方式如下:
- MySQL、MariaDB:使用反引号包裹列名
示例代码:-- SELECT子句使用 SELECT `_name`, id, mobile FROM user; -- WHERE子句使用 SELECT * FROM user WHERE `_name` = '测试用户'; - PostgreSQL、SQLite、Oracle(需开启
QUOTED_IDENTIFIER配置):使用双引号包裹列名
示例代码:-- SELECT子句使用 SELECT "_name", id, mobile FROM user; -- WHERE子句使用 SELECT * FROM user WHERE "_name" = '测试用户'; - SQL Server:默认使用方括号包裹列名,开启
QUOTED_IDENTIFIER配置后也支持双引号
示例代码:-- SELECT子句使用 SELECT [_name], id, mobile FROM user; -- WHERE子句使用 SELECT * FROM user WHERE [_name] = '测试用户';
补充说明:如果使用ORM框架操作数据库,多数框架默认会自动对非标准标识符做转义处理,无需手动添加引用符,可查阅对应框架的标识符转义规则确认配置。
内容的提问来源于stack exchange,提问作者Jayshree Sherekar
相关产品推荐
相关产品推荐

