如何在PostgreSQL数据库中截取(子字符串)特定列的所有值?

4

我对PostgreSQL比较陌生。我正在使用一个表,其中"标题"列没有强制设置最大长度(字符数)限制。该应用程序需要它小于1000个字符,但某些字段达到了1200、1300等。

我对mySql非常熟悉,但学习PostgreSQL的难度更大一些。

如果这是mySql,我会这样做:

UPDATE TABLE entries SET title = LEFT(title,1000)

我该如何在PostgreSQL中实现同样的功能?

我有phppgadmin和命令行可以使用。

2个回答

6
实际上,在PostgreSQL中是相同的。
UPDATE TABLE entries SET title = LEFT(title,1000)

或者你可以像这样做。
UPDATE TABLE entries SET title = substring(title from 1 for 1000)

这里是关于PostgreSQL字符串函数的文档。


啊,我感觉有点傻,没有意识到它是一样的。谢谢你。 - cwd

3
在PostgreSQL中,它可能是这样的:
UPDATE TABLE entries SET title = substring(title from 1 for 1000)

来自pg文档

函数 substring(string [from int] [for int])
描述 提取子字符串
示例 substring('Thomas' from 2 for 3)
结果 hom

注:该函数用于提取字符串中指定位置和长度的子字符串。其中,参数string为原始字符串,参数from为开始位置,参数for为要提取的长度。

1
不是针对你,但你完全复制了我的查询,还加上了同样的链接。你甚至在读完我的回答后才发现它并不从零开始,然后编辑了你自己的答案。有什么原因吗? - Marc
我真的不喜欢被称为作弊者。不冒犯你?是啊。我实际上找到了和你一样的文档。谷歌,想想也知道。我确实忘记了基于1的索引,但只是在你的答案被删除后才决定提交答案。不冒犯你。还有一个踩?谢谢。 - Paul Sasik
@Marc 我选择了你的答案,因为它基本上是相同的,并且你回答得比较快,但如果那是你的话,可能没有downvote的好理由。 - cwd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接