我需要例行地将数据附加到字段。我的简化示例我有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)
还有其他解决方案吗?
答案 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)