実現したいこと
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 コメント