1 回答

TA貢獻1820條經驗 獲得超9個贊
我相信您的主要問題是第一個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
第一個(更正后的查詢)結果(使用如下示例數據):-
使用的整個測試 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;
添加回答
舉報