sql2o-选择查询以从VARCHAR库伦中删除尾随空格

时间:2019-05-09 19:17:03

标签: java mysql sql sql2o

使用sql2o(https://github.com/aaberg/sql2o

选择具有尾随空格(例如"some value ")的VARCHAR列时,返回值为"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 ??? :( ");
        }

1 个答案:

答案 0 :(得分:1)

认为我在Sql2o中找到了答案。

我相信通过使用String.class,它是使用StringConverter类将您的查询输出转换为字符串。这行在StringConverter类的最底部:

return val.toString().trim();

找到了here