Конкатенация PostgreSQL от избранных - PullRequest
0 голосов
/ 12 июня 2018

У меня есть таблица Цифры, которая содержит INT от 0 до 9. Что я хочу сделать, это присоединиться три или более раз и сделать эти значения равными 0, ..., 124,125, ... 998,999;

Я делаю что-то вроде этого:

SELECT *
FROM Digits AS Fir JOIN
     Digits AS Sec
     ON TRUE JOIN
     Digits AS Thi
     ON TRUE;

Но я получаю следующее:
- + - + ---
0 |0 |0
0 |0 |1
0 |0 |2
0 |0 |3
0 |0 |4
0 |0 |5
0 |0 |6
0 |0 |7
0 |0 |8
0 |0 |9
0 |1 |0
0 |1 |1
0 |1 |2
.
.
.
.
9 |9 |9

Любые идеи, как я могу преобразовать его, чтобы получить:
0
1
2
3
.
.
.
999

Привет.

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Вы можете явно умножить каждую цифру на ее позицию:

SELECT     100 * fir.digit + 10 * sec.digit + thi.digit
FROM       digits AS fir 
CROSS JOIN digits AS sec 
CROSS JOIN digits AS thi

(но, честно говоря, решение Гордона более точное.)

0 голосов
/ 12 июня 2018

Я бы просто использовал generate_series():

select val
from generate_series(0, 999) gs(val);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...