我是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)字段的最大大小。
如果该字段达到最大值,那么现有数据将被新数据覆盖,否则它将与现有数据相连。
答案 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)
您应该创建一个存储过程,您将调用该存储过程来更新该字段。它将检查更新后的新大小,如果它太大,则执行您需要的任何操作(即添加到存档表,修剪现有数据等)。