gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:59:47 25 4
gpt4 key购买 nike

我有这些列(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com