一つのカラムに複数の値が入っており、その値を条件(元の値)ごとに更新したい

実現したいこと

table のcol1にそれぞれ3つの値が入っており、次のように値を更新したいと思います。

col1= ‘1001_0’ → col1= ‘1001_1’
col1= ‘1002_0’ → col1= ‘1002_1’
col1= ‘1003_0’ → col1= ‘1001_3’

前提

Oracleなのですが、ノーコードツール的なアプリの中で拡張機能としてSQLが使えます。

発生している問題・エラーメッセージ

ORA-12704 character set mismatch

とエラーが出てしまいます。

該当のソースコード

SQL

1update table2set col1 = case col1 3when 1001_0’ then 1001_1’ 4when 1002_0’ then 1002_1’ 5when 1003_0’ then 1001_3’ 6else col1 7end8where col2=‘honyalala’ and col3 in (001)

試したこと

そもそもcaseを使用した場合、where の場所もそこで良いのか、必要なのかさえもわかっておりません・・。
別の方の似たような質問でwhere箇所が以下のようになっていたので、試してみましたが、動きませんでした。

where col1 in (‘1001_0’,‘1002_0’, ‘1003_0’)

補足情報

col1の値が一つの時は、col1に入る値が ‘1’  だったものを ‘0’ に更新するだけでしたので、以下のSQLで希望通りに動作出していました。

update table set col1 = ‘1’ where col2=‘honyalala’ and col3 in (‘001’)

これが、複数の値になっただけで判らなくなってしまいました。
どなたか、ご教示いただけませんでしょうか?

よろしくお願いいたします。

コメントを投稿

0 コメント