java - 使用 java 在 sqlite SELECT 中的列之间添加逗号和空格

标签 java sqlite

我有这些列(MemberIdCityStatePostal)(FirstNameLastName)位于 sqlite 表 tblMember 中。

我想在 java 中创建一个查询,如下所示:

SELECT (LastName FirstName) AS 'LastName FirstName', 
       (City, State Postal) AS 'City, State Postal' FROM tblMember;

因此,我已经搜索并尝试了下面的代码,用于在 java 中创建上述查询,如下所示:

String[] columns = new String[]{"LastName FirstName", "City, State Postal"};
String fields = "";

for (int i = 0; i < columns.length; i++) {
    // replace comma Plus space
    String field = columns[i].replaceAll(", ", " || \", \" || ");
    // replace space
    field = field.replaceAll(" ", " || \" \" || "); 
    fields += ",("+field+") AS '" + columns[i] + "' ";
}
String query = "SELECT MemberId"+fields+" FROM tblMember ";

注意:在上面的代码中,我使用了 || sqlite 运算符来连接列。但是,它成功地组合了空格,但没有将逗号与空格组合,并显示以下语法错误:

SEVERE: null java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (near "||": syntax error)
at org.sqlite.core.DB.newSQLException(DB.java:890)
at org.sqlite.core.DB.newSQLException(DB.java:901)

请帮我解决这个问题!

最佳答案

我认为您的主要问题是第一个 replaceAll 引入了空格,然后被第二个 replaceAll 替换。

我相信以下可能就是您想要的:-

    for (int i = 0; i < columns.length; i++) {
        // replace comma Plus space
        String field = columns[i].replaceAll(", ", "||',ASPACEHERE'||");
        // replace space
        field = field.replaceAll(" ", "||' '|| ");
        field = field.replaceAll("ASPACEHERE"," ");
        fields += ",("+field+") AS '" + columns[i] + "' ";
    }
    String query = "SELECT MemberId"+fields+" FROM tblMember ";
  • 使用单引号 ' 而不是双引号 ",因为它们更易于使用。
  • 所有没有特别要求的空格均已删除。
  • 如果第一个 replaceAll 中需要空格,则使用是否需要空格的指示符,以便添加的空格不会被第二个 replaceAll 替换(ASPACEHERE被用作指示剂)。
  • 添加了第三个 replaceAll,以用空格替换启动符 (ASPACEHERE)。

这会产生一个查询:-

SELECT MemberId,(LastName||' '|| FirstName) AS 'LastName FirstName' ,
    (City||', '||State||' '|| Postal) AS 'City, State Postal'  FROM tblMember

而不是:-

SELECT MemberId,(LastName || " " || FirstName) AS 'LastName FirstName' ,
    (City || " " || || || " " || ", || " " || " || " " || || || " " || State || " " || Postal) AS 'City, State Postal'  FROM tblMember

第一个(更正后的查询)结果(使用如下示例数据):-

enter image description here

使用的整个测试 SQL 是(从输出的 *query 变量复制的 SELECT SQL):-

DROP TABLE If EXISTS tblMember;
CREATE TABLE IF NOT EXISTS tblMember (MemberId INTEGER, City TEXT, State TEXT, POSTAL TEXT, LastName TEXT, FirstName TEXT);
INSERT INTO tblMember VALUES(1,'Oxford','Oxfordshire','OX12 0ND','Bloggs','Fred');
SELECT MemberId,(LastName||' '|| FirstName) AS 'LastName FirstName' ,(City||', '||State||' '|| Postal) AS 'City, State Postal'  FROM tblMember;

关于java - 使用 java 在 sqlite SELECT 中的列之间添加逗号和空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52460972/

相关文章:

Java 程序无法正确添加金额

javascript - 单击动态生成的 anchor 标记时获取超链接文本

python - Windows 任务计划程序,python 脚本,代码 2147942401

android - 原始查询不工作android

java - 如何在 Thymeleaf 片段中重复 Spring 模型

java - ERROR : Unable to start the daemon process. 此问题可能是由于守护程序配置不正确造成的

java - 在类日志中存储学生评价的最佳方式

Java 数据库连接类一直将连接返回为 Null

php - 如何将sqlite同步到远程mysql?

c# - 在SQLite中管理多个写入请求