Если ваши данные хранятся в таблице и вы используете SQLite версии 3.8.3 или выше, то можно выполнить то, что вы хотите, с помощью рекурсивного CTE.
Ниже приведен рабочий пример SQL, на который я ссылаюсь.
WITH
NBR_LIST_ETL AS
(
SELECT
A.*,
CAST(REPLACE(NBR_LENGTH % 3, 0, 3) AS INTEGER)
AS SUB_STRING_LENGTH
FROM
(
SELECT
ID, -- INTEGER PRIMARY KEY COLUMN
NBR, -- INTEGER COLUMN YOU WANT TO FORMAT W/ COMMAS
LENGTH(NBR)
AS NBR_LENGTH
FROM
NBR_LIST A -- REPLACE NBR_LIST W/ YOUR TABLE NAME
) A
),
NBR_FORMAT_RECURSIVE AS
(
SELECT
ID,
SUBSTR(NBR, 1, SUB_STRING_LENGTH)
AS NBR_SEGMENT,
SUBSTR(NBR, SUB_STRING_LENGTH + 1)
AS NBR_REMAINING,
NBR_LENGTH - SUB_STRING_LENGTH
AS NBR_LENGTH
FROM
NBR_LIST_ETL
UNION ALL
SELECT
ID,
SUBSTR(NBR_REMAINING, 1, 3)
AS NBR_SEGMENT,
SUBSTR(NBR_REMAINING, 4)
AS NBR_REMAINING,
NBR_LENGTH - 3
AS NBR_LENGTH
FROM
NBR_FORMAT_RECURSIVE
WHERE
NBR_LENGTH >= 3
)
SELECT
GROUP_CONCAT(NBR_SEGMENT)
AS NBR_FORMATTED
FROM
NBR_FORMAT_RECURSIVE
GROUP BY
ID
Если ваша таблица содержала следующие числа -
NBR
25271
7
29
75438175
342
212
4758
863
2313917
Тогда запрос выдаст -
NBR_FORMATTED
25,271
7
29
75,438,175
342
212
4,758
863
2,313,917