我有一个存储温度值的数据库,所以我的数据库的列名是 100 150 200
现在的问题是当我尝试在列名 100 下获取值时,它显示错误我的查询看起来像
从用户名="我"的用户中选择 100;
然后rs.get string("100");此行给出错误
任何人都可以建议我如何在这些类型的列名下检索值吗?
转义列名的标准 SQL 方法是括在双 qoutes 中。
SELECT "100" from user where name='me';
大多数DBMS都支持此功能 - Oracle,PostgreSQL,MySQL,MSSQL和SQlite。
除此之外,还有 databse 特定的方法来转义列名
SQL Server - 方括号 []
SELECT [100] from user where name='me';
MySQL - 反引号 ''
SELECT `100` from user where name='me';
注意:
- 双 qoutes 在 MSSQL 中充当转义保留字,当QUOTED_IDENTIFIER已打开。
- 双 qoutes ac 作为转义保留字在 MySQL 中,如果它在 ANSI 中模式
所以对于MSSQL,先做
SET QUOTED_IDENTIFIER;
如果您的查询使用任何关键字或数字列名称,则使用 [] 表示 MS-SQL,使用 '' 表示 MySQL。
MS-SQL:
Select [100] from user where name='me';
我的 SQL:
Select `100` from user where name='me';