从Postgres中选择截断的字符串

时间:2015-10-08 21:32:20

标签: sql postgresql types casting varchar

我在Postgres中有一些大的varchar值,我想要SELECT并移动到其他地方。他们要使用的地方VARCHAR(4095)所以我只需要最多4095个字节(我认为是字节),其中一些变量很大,所以性能优化就是选择它们的截断版本。< / p>

我该怎么办?
类似的东西:

SELECT TRUNCATED(my_val, 4095) ...

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

1 个答案:

答案 0 :(得分:12)

n中的 varchar(n) 字符的数量(不是字节)。 The documentation:

  

SQL定义了两种主要字符类型:character varying(n)和   character(n),其中 n 是一个正整数。这两种类型都可以   存储字符串长度为 n 字符(非字节)

大胆强调我的。

&#34;截断&#34;最简单的方法一个字符串将与left()

SELECT left(my_val, 4095)

或者你可以cast

SELECT my_val::varchar(4095)

The manual once more:

  

如果有人明确地将值转换为character varying(n)或   character(n),然后超长值将被截断为 n   字符没有引发错误。 (这也是SQL标准所要求的。)