我在Postgres中有一些大的varchar
值,我想要SELECT并移动到其他地方。他们要使用的地方VARCHAR(4095)
所以我只需要最多4095个字节(我认为是字节),其中一些变量很大,所以性能优化就是选择它们的截断版本。< / p>
我该怎么办?
类似的东西:
SELECT TRUNCATED(my_val, 4095) ...
我不认为这是一个字符长度,它需要是一个字节长度?
答案 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)
如果有人明确地将值转换为
character varying(n)
或character(n)
,然后超长值将被截断为n
字符没有引发错误。 (这也是SQL标准所要求的。)