我无法理解 btrim() 的行为

ziM*_*yth 1 postgresql trim

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

在这里他们提到了这个例子:

btrim('xyxtrimyyx', 'xyz')
Run Code Online (Sandbox Code Playgroud)

它给trim

当我尝试这个例子时:

btrim('xyxtrimyyx', 'yzz')
Run Code Online (Sandbox Code Playgroud)

或者

btrim('xyxtrimyyx', 'y')
Run Code Online (Sandbox Code Playgroud)

我明白了:xyxtrimyyx

我不明白这一点。为什么不删除y

Jeb*_*bby 5

从您指向的文档中,定义说:

从字符串的开头和结尾删除仅由字符(默认为空格)中的字符组成的最长字符串

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

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

btrim('xyxtrimyyx', 'xyz')
Run Code Online (Sandbox Code Playgroud)

这将返回trim,因为它穿过xyxtrimyyx并到达 ,t并且在 中没有看到该字母xyz,因此函数在此处停止从前面剥离。

我们现在只剩下trimyyx

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

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