0

我有一个带有 varchar2(4000) 数据类型的 URL 值的列 (URL)。那里的一些值超过 4000 个字符,那么我有没有办法只对列中超过 4000 个字符的值进行子字符串化,用同一列中的子字符串替换原始值?

4

2 回答 2

2

Varchar 最多支持 4,000 个字符;每个函数输出,如 SUBSTR,都是一个 varchar,因此不能容纳超过 4,000 个字符的字符串。您将使用 clob;但是 clob 是一个 lobobject;所以,它会很慢。

您可以在创建表时添加 2 列并使用 PL/SQL 块,因为 varchar 在 PL/SQL 中最多可包含 32,767 个字符。

于 2012-12-18T17:56:09.427 回答
2

您可以像这样找出超过 4000 个字符的列,

select userid, length(description)
from Users
where length(description) > 4000;

因此,您可以在 CTL 文件本身中执行以下解析,

description "SUBSTR(:description, 1, 4000)",

如果您不想丢失数据,那么您可以使用CLOB数据类型而不是varchar2(4000)

于 2012-12-18T17:33:24.543 回答