postgresql - 了解 postgresql 中子字符串的行为

标签 postgresql substring

我是 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/

相关文章:

sql - PostgreSQL:在最近一次考试的日期参加了不止一次考试的学生

java - 在JAVA中递归计算字符串中的字符

r - 使用 R 使用 lapply 将列添加到多个数据帧

windows - 如何通过 Windows 任务计划程序执行 Postgresql 过程

ruby - 如何使用后续声明 postgresql json/jsonb 字段?

ruby-on-rails - Heroku dev 上的 Postgres 进程 fork 错误

mysql - Rails 在连接模型上查询用户名

java - 如何将字符串切成两部分并将子字符串传递给不同的函数?

sql - 如何找到始终包含确切数量的字符类型的子字符串?

java - 大字符串中最长的重复且不重叠的子字符串