【发布时间】:2019-05-09 19:17:02
【问题描述】:
使用 sql2o (https://github.com/aaberg/sql2o)
选择具有尾随空格的varchar列(例如"some value ")返回值是"some value"
当从 mysql cli 中选择时,结果包含尾随空格
找不到任何文档来防止这种情况发生
- 表:
CREATE TABLE names
(
name VARCHAR(100),
PRIMARY KEY (experiment_key, metric_name)
);
- 代码示例:
Sql2o sql2o;
String name = "some name with trailing space ";
try (Connection con = sql2o.open()) {
con.createQuery("INSERT INTO names (name) VALUES(:name)")
.addParameter("name", name)
.executeUpdate();
}
String nameFromDB;
try (Connection con = sql2o.open()) {
nameFromDB = con.createQuery("select name from names")
.executeAndFetchFirst(String.class);
}
if (!nameFromDB.equals(name)){
throw new RuntimeException("where did the trailing spaces go ??? :( ");
}
【问题讨论】:
-
INSERT查询看起来并不实际。应该是INSERT INTO names (name) VALUES(:name)。 -
这只是一个简化的例子,我会更新
-
是什么让您认为是 sql2o 删除了尾随空格,而不是您连接的数据库?
-
从 mysql cli 运行查询结果有尾随空格