我想访问数组的前5个元素"成分"在UNNESTing数组之前:
SELECT
TRIM
(REGEXP_REPLACE
(UNNEST
(string_to_array(ingredients, ';'))[1:5], '\S+\%|\s+\(.*?\)','','g'))
FROM products
"成分"数组可能包含以下值:
{'1%', 'abc(2%)', 'abcd', ... , N th element}
以下代码运行正常,但我不知道上述代码有什么问题。
SELECT (string_to_array('1,2,3,4',','))[1:3]
答案 0 :(得分:0)
这有效:
select
trim(
regexp_replace(
unnest(
(string_to_array(ingredients, ';'))[1:5]
),
'\S+\%|\s+\(.*?\)',
'',
'g'
)
)
from products;
您的示例显示了保持良好格式/缩进的重要性。
以下内容与您编写的内容相同,但重新格式化(左括号是函数本身旁边,右边是缩进级别,内部的任何内容都缩进更多):
SELECT
TRIM(
REGEXP_REPLACE(
UNNEST(
string_to_array(ingredients, ';')
)[1:5],
'\S+\%|\s+\(.*?\)',
'',
'g'
)
)
FROM products
- 错误显而易见,您尝试将[1:5]
应用于已经无效的结果集,而不是数组。