java - sql2o - 选择查询从 VARCHAR 列中删除尾随空格

标签 java mysql sql sql2o

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

选择具有落后空间的varchar列(例如“某些值” )返回值是“某些值”

当从 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

关于java - sql2o - 选择查询从 VARCHAR 列中删除尾随空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56066198/

相关文章:

java - 如何在类似于 GridView 的 GridLayout 中获取选定的子项

mysql - 查询一张表中的项目

MySQL 未正确排序结果

SQL Server 2008 - 使用 ROW_NUMBER 查找重复项

Java维基引擎

java - 在 Storm TrackedTopology 单元测试中运行 Trident 拓扑

mysql - SQL - 检索前天的记录

sql - 从 pgAdmin 生成的 CREATE 语句中的 GRANT

java - JAXB 的混合内容不适用于 WSDL

mysql - 每个组中满足条件的一个条目的sql