我无法理解 btrim() 的行为

I can't understand the behaviour of btrim()

我目前正在使用postgresql,我了解了这个功能btrim,我查看了很多网站的解释,但我不是很明白。

Here 他们提到了这个例子:

btrim('xyxtrimyyx', 'xyz')

给出trim.

当我尝试这个例子时:

btrim('xyxtrimyyx', 'yzz')

btrim('xyxtrimyyx', 'y')

我明白了:xyxtrimyyx

我不明白这个。为什么它不删除 y

根据您指向的文档,定义是:

Remove the longest string consisting only of characters in characters (a space by default) from the start and end of string

您的示例不起作用的原因是因为该函数试图从文本的 Both 两侧剥离文本,仅包含 个指定的字符

让我们看一下第一个示例(来自文档):

btrim('xyxtrimyyx', 'xyz')

这个 returns trim,因为它经过 xyxtrimyyx 到达 t 并且在 xyz 中没有看到那个字母,所以这就是函数停止从前面剥离的地方。

我们现在只剩下 trimyyx

现在我们做同样的事情,但是从字符串的末尾开始。 虽然 xyz 之一是最后一个字母,但删除该字母。 我们这样做直到 m,所以我们剩下 trim

注意:我从未使用过任何形式的 sql。关于 postgresql 执行此操作的 exact 方式,我可能是错误的,但我从文档中相当确定这是如何完成的。