使用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 ??? :( ");
        }

最佳答案

我想我在Sql2o中找到了你的答案。
我相信通过使用String.class,它使用StringConverter类将查询输出转换为字符串。StringConverter类的最底层是这一行:

return val.toString().trim();

发现here

10-08 10:52