如何避免在concat中使用update达到varchar2的最大大小

时间:2013-08-22 16:39:29

标签: sql oracle

我是oracle的新手。更新我正在使用的表时

update my_table set column_name =concat(" ' ", column_name, "viewed by xxxx") 
where item_value=2. 

只要有人正在查看,就会附加此值...    现在我的问题是如何避免varchar(2)的最大大小,并设置它是否只比它的大小小50个字符。我在servlet中使用它

我的要求是..如果某个用户查看item_value为2,则通过将column_name中的现有值汇总到item_value = 2,将其userid输入my_table,在一个单词中我不想丢失字段中的早期数据更新时,避免达到varchar2(900)字段的最大大小。

如果该字段达到最大值,那么现有数据将被新数据覆盖,否则它将与现有数据相连。

2 个答案:

答案 0 :(得分:2)

只需使用SUBSTR:

update my_table set column_name
    = SUBSTR(' '' ' || column_name || 'viewed by xxxx')
            , 1, 900)
where item_value=2

P.S。 concat只能接受2个参数 - 我已经将你的代码转换为使用更简单的||相反,连接运算符。

P.P.S。 Oracle中的字符串文字由'而不是"

分隔

答案 1 :(得分:0)

您应该创建一个存储过程,您将调用该存储过程来更新该字段。它将检查更新后的新大小,如果它太大,则执行您需要的任何操作(即添加到存档表,修剪现有数据等)。