将数据附加到广告数据库服务器中的“备注”字段

时间:2012-05-10 16:50:58

标签: sql advantage-database-server

我需要例行地将数据附加到字段。我的简化示例我有2个字段,一个定义为备注字段,另一个声明为cicharacter大小255,我使用的是SQL

UPDATE tableName Set memoField = (CASE WHEN memoField is null THEN 'hello' 
                                     ELSE memoField+CHAR(10)+'hello' END),  
                     textField = (CASE WHEN textField is null THEN 'hello' 
                                     ELSE textField+';'+'hello' END)

备注字段update / append工作正常,但textField仅在字段以前为空(null)时才有效。如果文本字段已经有数据,我会收到一条错误消息,指出数据丢失,并且没有附加数据

好吧,我最终在这个问题上找了一个“解决方案”......

UPDATE tableName Set textField = (CASE WHEN textField is null THEN 'hello' 
                                   ELSE substring(textField,1,length(textfield))+';hello' END)

还有其他解决方案吗?

1 个答案:

答案 0 :(得分:1)

正如@Gordon在评论中指出的那样,char字段末尾有空格,这将被视为字符串的一部分。这可能是显而易见的,但是,例如,如果char字段的大小为10,并且它包含值“Hi”,那么textField + ";Hello"的长度将为16个字符:

012345678901234567890
Hi        ;Hello

子字符串/长度组合的替代方法是rtrim,它会删除尾随空格:

UPDATE tableName Set textField = (CASE WHEN textField is null THEN 'hello' 
                                   ELSE rtrim(textField)+';hello' END)