Thread: question about array indexing
Hey,
I'm wondering if this isn't a bug somewhere in the parser. I had to add additional parenthesis around the regexp_split_to_array.
$ with x as (select 'a b c' a)
select
regexp_split_to_array(a, ' ')
from x;
regexp_split_to_array
-----------------------
{a,b,c}
(1 row)
$ with x as (select 'a b c' a)
select
regexp_split_to_array(a, ' ')[1]
from x;
ERROR: syntax error at or near "["
LINE 3: regexp_split_to_array(a, ' ')[1]
^
$ with x as (select 'a b c' a)
select
(regexp_split_to_array(a, ' '))[1]
from x;
regexp_split_to_array
-----------------------
a
(1 row)
regards,
Szymon
On Mon, Nov 4, 2019 at 10:05 AM Szymon Lipiński <mabewlun@gmail.com> wrote: > > Hey, > I'm wondering if this isn't a bug somewhere in the parser. I had to add additional parenthesis around the regexp_split_to_array. > > > $ with x as (select 'a b c' a) > select > regexp_split_to_array(a, ' ') > from x; > > regexp_split_to_array > ----------------------- > {a,b,c} > (1 row) > > $ with x as (select 'a b c' a) > select > regexp_split_to_array(a, ' ')[1] > from x; > > ERROR: syntax error at or near "[" > LINE 3: regexp_split_to_array(a, ' ')[1] > ^ > $ with x as (select 'a b c' a) > select > (regexp_split_to_array(a, ' '))[1] > from x; > regexp_split_to_array > ----------------------- > a > (1 row) It's always been that way. You also have to wrap function column expansions: select (func()).* I don't know the exact technical reason why that's required, but my money is on precedence related problems. merlin