我是 postgresql 新手。我尝试使用 substring
函数,在尝试一些示例时,我注意到了我不理解的“尴尬”行为。考虑以下场景:
select substring('123456',1,3)
返回 123(这对我来说是合乎逻辑的)
select substring('123456',0,1)
不返回任何内容(我不知道为什么!)
select substring('123456',-1,2)
也不返回任何内容!
问题: 有人可以解释一下当我们给 postgresql 子字符串函数指定 0 或负值的位置时,它的行为如何。
最佳答案
字符串中的第一个位置是 1。如果执行 SUBSTR('abc', 1, 1)
,您将得到 a
。如果执行 SUBSTR('abc', 0, 1)
,您会得到一个空字符串,因为位置 0 处没有任何内容。(如果该位置不存在,SUBSTR 不会引发异常。) -1 或 10 的位置相同。
它们都返回a
:SUBSTR('abc', 0, 2)
、SUBSTR('abc', -1, 3)
,这应该显示 SUBSTR
在 postgres 中是如何工作的。 (我使用的是 SUBSTR,但它与 SUBSTRING 相同。)
还值得注意的是,postgres 中的数组是从 1 开始的,而不是从 0 开始的。
关于postgresql - 了解 postgresql 中子字符串的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49716376/