从Postgres中选择截断的字符串

Som*_*Guy 8 sql postgresql varchar types casting

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

我怎样才能做到这一点?
就像是:

SELECT TRUNCATED(my_val, 4095) ...
Run Code Online (Sandbox Code Playgroud)

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

Erw*_*ter 14

nvarchar(n)是的数目字符(而不是字节).文件:

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

大胆强调我的.

"截断"字符串的最简单方法是left():

SELECT left(my_val, 4095)
Run Code Online (Sandbox Code Playgroud)

或者你可以投下:

SELECT my_val::varchar(4095)
Run Code Online (Sandbox Code Playgroud)

手册再次:

如果显式地将值转换为character varying(n)character(n),那么超长值将被截断为n 字符而不会引发错误.(这也是SQL标准所要求的.)