子串列值超过4000个字符

时间:2012-12-18 17:22:50

标签: sql oracle11g

我有一个列(URL),其URL值包含varchar2(4000)数据类型。那里的一些值超过了4000个字符,那么有没有办法让我只将超过4000个字符的列中的那些值替换为用同一列中的子字符串替换原始值?

2 个答案:

答案 0 :(得分:2)

您可以找到超过4000个字符的列,

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

所以您可以在CTL文件中自行完成分辨率,如下所示,

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

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

答案 1 :(得分:2)

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

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