gpt4 book ai didi

sql - 为什么在访问函数返回的数组时需要添加括号(在 SELECT 中)?

转载 作者:行者123 更新时间:2023-11-29 12:42:56 25 4
gpt4 key购买 nike

来自(脚本)编程语言,我不明白为什么这不起作用

SELECT regexp_matches('hello world', '(he).*(wo)', 'g')[1];

添加额外的括号确实起作用(至少在 Postgres 中)。

SELECT (regexp_matches('hello world', '(he).*(wo)', 'g'))[1];

我会假设在这两种情况下都访问了 regexp_matches 返回的数组,但我想我对 SQL 的语法理解在这里缺乏。

那么为什么我们需要括号?

最佳答案

括号有相当高的precedence , 所以你的查询被解析为

SELECT regexp_matches(('hello world', '(he).*(wo)', 'g')[1]);

这没有意义,你想在调用 regexp_matches() 的结果上应用索引,所以你必须添加括号来对 regexp_matches 调用进行分组。

(注意这两个字符[]是括号,你加的是括号,不是括号

关于sql - 为什么在访问函数返回的数组时需要添加括号(在 SELECT 中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39906634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com