gpt4 book ai didi

sql查询截断超过指定长度的列

转载 作者:行者123 更新时间:2023-11-29 13:04:14 34 4
gpt4 key购买 nike

我在 postgres 中有下表:

create table1 (col1 character varying, col2 character varying);

我的表有以下数据:

col1            col2
Questions Tags Users
Value1 Value2 Val

我想找到 col1 和 col2 的长度,当第 1 列和第 2 列的值的长度超过 6 时,我想截断它并丢弃剩余的值。即我希望我的决赛 table 看起来像下面这样:

col1            col2
Questi Tags U
Value1 Value2

实际上我想这样做的原因是,当我在 table1 上创建索引时,我收到以下错误:

ERROR: index row size 2744 exceeds maximum 2712 for index "allstrings_string_key" HINT: Values larger than 1/3 of a buffer page cannot be indexed. Consider a function index of an MD5 hash of the value, or use full text indexing.

我知道我可以通过将值导入某种编程语言然后截断值来做到这一点。有什么方法可以让我在 postgres 中使用 sql 查询来实现相同的目的。

最佳答案

您不能将它们更新为最多只包含长度为 6 的字符串吗?

我不是 postrgres 专家,所以这可能不是最好的方法,但无论如何应该完成这项工作:

UPDATE table1 SET col1 = SUBSTRING(col1, 1, 6) WHERE LEN(col1) > 6
UPDATE table1 SET col2 = SUBSTRING(col2, 1, 6) WHERE LEN(col2) > 6

关于sql查询截断超过指定长度的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19488767/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com