Postgresql 9.2 语法问题
Postgresql 9.2 syntax issue
我正在尝试使用 Postgresql 9.2 执行此查询
WITH udetail as (select(regexp_split_to_array('user@domain', E'\@+')))
select * from udetail[1];
Buy it 在 '['
的开始位置附近给我一个语法错误。同样的查询在 9.3 版下运行良好。所以我想知道是否有其他方法可以编写查询以获得相同的结果。
我想你正在寻找这样的东西:
WITH udetail(x) as (
select(regexp_split_to_array('user@domain', E'\@+')))
select x[1] from udetail;
我不认为你可以在你的情况下索引像 udetail
这样的 table 表达式。 table表达式的列是数组类型。因此,您可以在列上使用数组下标编号,而不是 table 本身。
您应该使用别名作为查询参数:
with udetail(arr) as (
select regexp_split_to_array('user@domain', E'\@+')
)
select arr[1] from udetail;
或作为列别名:
with udetail as (
select regexp_split_to_array('user@domain', E'\@+') as arr
)
select arr[1] from udetail;
你也可以不使用别名:
with udetail as (
select regexp_split_to_array('user@domain', E'\@+')
)
select regexp_split_to_array[1] from udetail;
我正在尝试使用 Postgresql 9.2 执行此查询
WITH udetail as (select(regexp_split_to_array('user@domain', E'\@+')))
select * from udetail[1];
Buy it 在 '['
的开始位置附近给我一个语法错误。同样的查询在 9.3 版下运行良好。所以我想知道是否有其他方法可以编写查询以获得相同的结果。
我想你正在寻找这样的东西:
WITH udetail(x) as (
select(regexp_split_to_array('user@domain', E'\@+')))
select x[1] from udetail;
我不认为你可以在你的情况下索引像 udetail
这样的 table 表达式。 table表达式的列是数组类型。因此,您可以在列上使用数组下标编号,而不是 table 本身。
您应该使用别名作为查询参数:
with udetail(arr) as (
select regexp_split_to_array('user@domain', E'\@+')
)
select arr[1] from udetail;
或作为列别名:
with udetail as (
select regexp_split_to_array('user@domain', E'\@+') as arr
)
select arr[1] from udetail;
你也可以不使用别名:
with udetail as (
select regexp_split_to_array('user@domain', E'\@+')
)
select regexp_split_to_array[1] from udetail;