Обсуждение: How to make the generate_series to generate the letter series?

Поиск
Список
Период
Сортировка

How to make the generate_series to generate the letter series?

От
"Wen Yi"
Дата:
Hi team,
when I study the generate_series function, I found that it can not only generate the number series but also can generate the date series.(ref: https://www.postgresql.org/docs/current/functions-srf.html)
That means I can make the generate_series to generate the letter series.

So I try this command (I guess I can follow the ascil code rule to complete this work):

# SELECT * FROM generate_series('a'::int, 'z'::int, 1);

But the postgres reply me a error, because the 'a' can't translate into 'integer' type.

Can someone provide me a better solution?
Thanks in advance!

Yours,
Wen Yi

Re: How to make the generate_series to generate the letter series?

От
Ian Lawrence Barwick
Дата:
2023年5月29日(月) 12:39 Wen Yi <896634148@qq.com>:
>
> Hi team,
> when I study the generate_series function, I found that it can not only generate the number series but also can
generatethe date series.(ref: https://www.postgresql.org/docs/current/functions-srf.html) 
> That means I can make the generate_series to generate the letter series.
>
> So I try this command (I guess I can follow the ascil code rule to complete this work):
>
> # SELECT * FROM generate_series('a'::int, 'z'::int, 1);
>
> But the postgres reply me a error, because the 'a' can't translate into 'integer' type.
>
> Can someone provide me a better solution?
> Thanks in advance!

SELECT chr(x + 96) FROM generate_series(1, 26) x

Regards

Ian Barwick



Re: How to make the generate_series to generate the letter series?

От
Bruce Momjian
Дата:
On Mon, May 29, 2023 at 12:51:15PM +0900, Ian Lawrence Barwick wrote:
> 2023年5月29日(月) 12:39 Wen Yi <896634148@qq.com>:
> >
> > Hi team,
> > when I study the generate_series function, I found that it can not only generate the number series but also can
generatethe date series.(ref: https://www.postgresql.org/docs/current/functions-srf.html)
 
> > That means I can make the generate_series to generate the letter series.
> >
> > So I try this command (I guess I can follow the ascil code rule to complete this work):
> >
> > # SELECT * FROM generate_series('a'::int, 'z'::int, 1);
> >
> > But the postgres reply me a error, because the 'a' can't translate into 'integer' type.
> >
> > Can someone provide me a better solution?
> > Thanks in advance!
> 
> SELECT chr(x + 96) FROM generate_series(1, 26) x

A working example is:

    SELECT chr(x + 96) FROM generate_series(1, 26) as f(x);

Here is a blog entry about more complex examples:

    https://momjian.us/main/blogs/pgblog/2012.html#July_24_2012

-- 
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EDB                                      https://enterprisedb.com

  Only you can decide what is important to you.