失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > PostgreSQL 表达式索引 - 语法注意事项

PostgreSQL 表达式索引 - 语法注意事项

时间:2023-07-29 20:49:11

相关推荐

PostgreSQL 表达式索引 - 语法注意事项

表达式索引是非常有用的功能之一,但是使用时语法上要注意一下,表达式需要用括号括起来

expressionAn expression based on one or more columns of the table. The expression usually must be written with surrounding parentheses, as shown in the syntax. However, the parentheses can be omitted if the expression has the form of a function call.

仅仅当表达式是单一的函数时,不需要括号。

例子

如果表达式不是函数,则会有这样的错误

postgres=# create table t2(c1 text, c2 text);CREATE TABLEpostgres=# create index idx1_t2 on t2 (c1||c2);ERROR: 42601: syntax error at or near "||"LINE 1: create index idx1_t2 on t2 (c1||c2);^LOCATION: scanner_yyerror, scan.l:1081

报错的原因是语法不支持。

解决办法,表达式用括号括起来

postgres=# create index idx1_t2 on t2( (c1||c2) );CREATE INDEX

类似的例子还很多

postgres=# create index idx1_t4 on t2 (c1::int);ERROR: syntax error at or near "::"LINE 1: create index idx1_t4 on t2 (c1::int);^postgres=# create index idx1_t3 on t2 ((c1::int));CREATE INDEXpostgres=# create index idx1_t5 on t2 ( substring(c1,1,2) || 'abc' );ERROR: syntax error at or near "||"LINE 1: create index idx1_t5 on t2 ( substring(c1,1,2) || 'abc' );^postgres=# create index idx1_t5 on t2 ( (substring(c1,1,2) || 'abc') );CREATE INDEX

如果觉得《PostgreSQL 表达式索引 - 语法注意事项》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。