当前位置: 首页 > 面试题库 >

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

诸葛阳成
2023-03-14
问题内容

从(脚本)的编程语言来了,我不明白为什么这 工作

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

同时添加其他括号 确实 有效(至少在Postgres中有效)。

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

我本来以为regexp_matches在两种情况下都可以访问返回的数组,但是我想这里缺少我对SQL的语法理解。

那么为什么需要括号呢?


问题答案:

方括号具有很高的优先级,因此您的查询被解析为

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

这没有任何意义,您希望将索引应用于call的结果regexp_matches(),因此您必须添加括号以对regexp_matches调用进行分组。

(请注意,这两个字符[]是方括号,您添加了括号,而不是方括号



 类似资料:
  • 问题内容: 我正在使用一个模板引擎,该引擎将代码插入我想要的站点中。 我写了一个函数来测试一些很简单的东西: 问题是,$ this-> data是私有的,我无法在任何地方访问它,因此我必须使用getData();。导致我的问题。 不起作用,并且先分配值也不起作用,因为它将直接在if()块中使用。 有任何想法吗? 问题答案: 从PHP 5.4开始,可以完全做到这一点:

  • 问题内容: 我对此代码有疑问:https : //github.com/reactjs/redux/blob/master/examples/async/containers/App.js 特别: 我猜这是一个两部分的问题。 为什么我需要将句柄更改设置为类的实例,我不能只对handleChange使用静态函数并直接在类中调用它 ? 我不知道这是怎么回事: 谢谢 问题答案: 以相反的顺序回答… 返回

  • 问题内容: 我使用在互联网上找到的一些教程,整理了一些jQuery AJAX代码。我是jQuery新手,想学习如何做得更好。我有一个同事,他使用很多jQuery编写了一个漂亮的Web应用程序。 我在这里最困惑的是:为什么在引用我的Web方法的响应时必须使用“ .d”,它代表什么? 问题答案: 它是在ASP.NET 3.5的ASP.NET AJAX版本中添加的,以防止您容易受到此攻击:http :

  • 问题内容: 我试图在postgres函数内返回查询结果。我尝试了一下,并完美地工作了: 问题是我需要一些东西来返回以下结果: 我需要什么回报,或者应该改变什么才能实现这一目标? 问题答案: 这可以通过一个简单的SQL函数来完成: 可以在手册中找到更多详细信息和示例:http : //www.postgresql.org/docs/current/static/xfunc-sql.html#XFUN

  • 本文向大家介绍为什么eval要添加括号呢?相关面试题,主要包含被问及为什么eval要添加括号呢?时的应答技巧和注意事项,需要的朋友参考一下 没太理解题意,方法的调用是要加括号的啊…… 如果题目问的是为什么会有 这种调用形式的话,那是因为js规定在间接调用(无调用者上下文)时,其编译的代码会默认执行在顶层作用域。 例: 所以永远只会返回全局对象(该表达式可以作为的polyfill,并且无法被污染)

  • 问题内容: 我可以将数据发送到服务器,但是只有在使用FromBody-Attribute时才可以。 为什么无法使用Post从主体自动读取json数据? 后端Web API 前端angularjs 问题答案: 仅因为某事是POST请求,所以没有明确的规则如何传递参数。POST请求仍可以包含URL中编码的查询参数。方法参数应该是“简单”类型(字符串,整数等)的查询参数。 通常,复杂类型应该是POST表