sql >> データベース >  >> RDS >> Oracle

テーブル列のカンマ区切り値をユーザー入力値oracleに置き換える方法

    delete from yourtable t
    where
      instr(','||t.col||',', '123') > 0
    

    必要に応じて、「123」をパラメータに置き換えることができます。

    ただし、コンマ区切りの値を保存せず、代わりに詳細テーブルを作成することをお勧めします。カンマ区切りのリスト内で特定の値を探す必要がある場合、他の制限の中でも特にインデックスを利用することはできません。

    [編集]質問を誤解しました。あなたはこれを意味しました:

    update YourTable t
    set
      t.col = substr(substr(replace(','||t.col||',', ',123,', ','), 2), -2)
    where
      instr(','||t.col||',', '123') > 0
    
    • 値の最初または最後の項目と一致するように、前後に「、」を追加します。
    • 値'、123、'(コンマ内)を使用して置き換えて、誤って1234と一致しないようにします。
    • substrを2回使用して、最初と最後の文字(追加されたコンマ)を削除します
    • whereでinstrを使用して、更新する必要のないレコードが更新されないようにします(パフォーマンスが向上します)。


    1. 異なるデータベースの2つのテーブルを結合する方法

    2. mysql2およびrails3(バンドル)でのRuntimeError

    3. SQLAlchemyとAlembicを使用して、データベースにテーブル列が存在するかどうかを確認します

    4. チェック制約が機能しないmysql