使用SELECT查询指定列时仅返回列名而非实际数据问题求助
问题原因
单引号在标准SQL语法中用于标记字符串常量,你在列名外包裹单引号的写法,本质是要求数据库返回nom、calories这两个固定字符串,而非读取aliment表中对应字段的实际值,所以才会出现每一行都显示列名字面量的问题。你之前执行SELECT * FROM aliment;可以正常返回全表数据,就是因为星号没有被单引号包裹,SQL会识别为查询所有列的指令。
解决方法
- 普通场景下查询指定列,直接写列名即可,不需要加任何包裹符号:
SELECT nom, calories FROM aliment;
- 如果你的列名包含空格、特殊字符,或者和SQL保留关键字重名需要转义时,根据你使用的数据库类型选择对应的标识符包裹符号即可,不要使用单引号:
- MySQL / MariaDB 用反引号(`)包裹:
SELECT `nom`, `calories` FROM aliment;- PostgreSQL / SQLite / Oracle 用双引号(")包裹:
SELECT "nom", "calories" FROM aliment;- SQL Server 用方括号([])包裹:
SELECT [nom], [calories] FROM aliment;
内容的提问来源于stack exchange,提问作者jawad fedala
相关产品推荐
相关产品推荐

