1

フィールドにデータを定期的に追加する必要があります。簡単な例では、2 つのフィールドがあり、1 つはメモ フィールドとして定義され、もう 1 つは 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)

メモ フィールドの更新/追加は正しく機能していますが、テキスト フィールドは、フィールドが以前に空 (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 に答える