我想修剪 a 中每个值的空格text[]
。
如果这只是一个text
专栏我可以做:
update server set tags = rtrim(ltrim(tags));
但是,我该如何为数组执行此操作?否则相同的查询给出错误:
ERROR: function rtrim(text[]) does not exist
LINE 1: update server set tags = ltrim(rtrim(tags));
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
但是,我找到了array_replace
需要替换特定索引的函数。我想我可以为每个数组值找出某种迭代并使用此函数。
您发现的是ARRAY 构造函数- 严格来说是一个 SQL 构造,而不是一个函数。它是与设置返回功能相结合的正确工具
unnest()
。不过有两个值得注意的优化:
最重要的是,添加的
WHERE
子句过滤不会更改的行。更新这些将一无所获,而且会付出全部代价。看:只需使用
trim()
而不是rtrim(ltrim(...))
.有关的:
trim()
和regexp_replace()
我偶然发现了这个
array
函数,虽然我不知道它到底做了什么,也不知道它在哪里记录(它似乎没有在这里列出https://www.postgresql.org/docs/12/functions-array.html)。该
unset
函数用于将数组扩展为一组行。之后我们用它array
来变回数组。