1

我需要定期将数据附加到字段。我是一个简化的示例,我有 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)

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

好的,我最终花了足够长的时间来寻找“解决方案”......

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

还有其他解决方案吗?

4

1 回答 1

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)
于 2012-05-10T20:42:36.620 回答