【问题标题】:Select truncated string from Postgres从 Postgres 中选择截断的字符串
【发布时间】:2016-01-06 16:42:13
【问题描述】:

我在 Postgres 中有一些较大的 varchar 值,我想选择并移动到其他地方。他们要去的地方使用VARCHAR(4095),所以我最多只需要 4095 个字节(我认为这是字节),其中一些 varchar 非常大,所以性能优化是选择它们的截断版本。

我该怎么做?
比如:

SELECT TRUNCATED(my_val, 4095) ...

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

【问题讨论】:

  • 这个问题的回答正确吗?

标签: sql postgresql types casting varchar


【解决方案1】:

varchar(n) 中的 n字符数,而不是字节数。 The manual:

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

我的大胆强调。

“截断”字符串的最简单方法是使用left()

SELECT left(my_val, 4095)

或者只是cast:

SELECT my_val::varchar(4095)

The manual once more:

如果一个人明确地将一个值转换为character varying(n)character(n),那么超长值将被截断为n 字符而不引发错误。 (这也是 SQL 标准所要求的。)

【讨论】:

    猜你喜欢
    • 2015-12-14
    • 2012-08-25
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多