Postgresql 9.2语法问题

Postgresql 9.2语法问题,sql,postgresql,syntax,syntax-error,Sql,Postgresql,Syntax,Syntax Error,我正在尝试使用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_spl

我正在尝试使用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
那样索引表表达式。表表达式的列是数组类型。因此,可以在列上使用数组下标号,而不是在表本身上


我想您正在寻找这样的产品:

WITH udetail(x) as (
   select(regexp_split_to_array('user@domain', E'\\@+')))
select x[1] from udetail;
我认为在您的例子中,不能像
udetail
那样索引表表达式。表表达式的列是数组类型。因此,可以在列上使用数组下标号,而不是在表本身上


我想您正在寻找这样的产品:

WITH udetail(x) as (
   select(regexp_split_to_array('user@domain', E'\\@+')))
select x[1] from udetail;
我认为在您的例子中,不能像
udetail
那样索引表表达式。表表达式的列是数组类型。因此,可以在列上使用数组下标号,而不是在表本身上


我想您正在寻找这样的产品:

WITH udetail(x) as (
   select(regexp_split_to_array('user@domain', E'\\@+')))
select x[1] from udetail;
我认为在您的例子中,不能像
udetail
那样索引表表达式。表表达式的列是数组类型。因此,可以在列上使用数组下标号,而不是在表本身上


您应该使用别名作为查询参数:

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;

您应该使用别名作为查询参数:

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;

您应该使用别名作为查询参数:

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;

您应该使用别名作为查询参数:

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;

那是更详细的答案,那是更详细的答案,那是更详细的答案,那是更详细的答案。