SQL列名与保留字重名导致SELECT查询失效的解决方法咨询
解决保留字作为列名的查询失败问题
核心原因
File属于SQL保留关键字,SQL解析器会优先将其识别为语法关键词,而非表中定义的列名,因此即使存在匹配数据也会返回空结果,编辑器将该字段标蓝就是识别为保留字的典型特征。
无需修改列名的解决方案
核心方法是用对应数据库支持的标识符转义符号包裹File列名,强制解析器将其识别为自定义字段名,不同数据库的使用方式如下:
- MySQL、MariaDB场景:使用反引号包裹列名
对应可正常执行的查询语句:SELECT * FROM files WHERE `File` = 'example'; - SQL Server、Access场景:使用方括号包裹列名
对应可正常执行的查询语句:SELECT * FROM files WHERE [File] = 'example'; - PostgreSQL、Oracle、标准模式下的SQLite场景:使用双引号包裹列名
对应可正常执行的查询语句:SELECT * FROM files WHERE "File" = 'example';
如果不清楚当前使用的数据库类型,按上述三种方式依次测试即可覆盖绝大多数场景。
内容的提问来源于stack exchange,提问作者thirddayouthere
相关产品推荐
相关产品推荐

