postgresql 从Postgres中选择截断的字符串

ozxc1zmp  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(128)

我在Postgres中有一些很大的varchar值,我想选择并移动到其他地方。他们要去的地方使用VARCHAR(4095),所以我最多只需要4095字节(我认为这是字节),其中一些varchar相当大,所以性能优化将是SELECT它们的截断版本。
我该怎么做?
类似于:

SELECT TRUNCATED(my_val, 4095) ...

我不认为这是一个字符的长度,但它需要一个字节的长度?

kse8i1jr

kse8i1jr1#

varchar(n)中的n是字符数,而不是字节数。The manual:
SQL定义了两种主要的字符类型:character varying(n)character(n),其中 n 是正整数。这两种类型都可以存储长度为 *n***个字符(不是字节)**的字符串。
大胆强调我的。
最简单的“截断”字符串的方法是使用left()

SELECT left(my_val, 4095)

或者只是铸造:

SELECT my_val::varchar(4095)

The manual once more:
如果显式地将值转换为character varying(n)character(n),则过长值将被截断为 n 个字符,而不会引发错误。(这也是SQL标准所要求的。

相关问题