#postgresql
#postgresql
Вопрос:
В Postgresql мне нужно взять строку ASCII типа CNR39XL
и превратить ее в число типа 21317392311
(значения ASCII — 65, но цифры оставлены как есть). Это делается для того, чтобы использовать некоторую логику в нашем программном обеспечении и перенести ее на уровень базы данных. Я частично справляюсь с этим:
ourdb=> SELECT CASE
ourdb-> WHEN ASCII(c) < 65 THEN c::integer
ourdb-> ELSE ASCII(c)-65
ourdb-> END
ourdb-> FROM regexp_split_to_table('CNR39XL','') s(c);
case
------
2
13
17
3
9
23
11
(7 rows)
Однако я не могу понять, как взять этот конечный набор чисел и преобразовать его в строку. Что я ищу?
Ответ №1:
Используйте string_agg
SELECT CAST(
string_agg(
CAST (CASE ... END AS text),
''
)
AS numeric)
FROM ...