私は以下のようにテーブルEmployeeを持っています。変更列には、アプリケーションを通じて値が変更された列の名前が含まれます。この列のデータはコンマで区切られています。私は結果が行ごとに1つの変更を持つようにこのテーブルを照会する必要があります。つまり、Changeカラムのデータをコンマで区切り、対応するローをフェッチします。私はどこから始めるべきかわからない!助けてください。 列に基づいて行をフェッチするSQLクエリ
0
A
答えて
2
あなたは、Oracleのregexp_substr
機能を使用することができ、見てみましょう:
select distinct Id, Name, Address, trim(regexp_substr(Change,'[^,]+', 1, level))
from Employee
connect by regexp_substr(Change, '[^,]+', 1, level) is not null;
これはあなたのChange
列にカンマ区切りの任意の数のために働く必要があります。
ここrexexp_substr機能で見るドキュメント:https://docs.oracle.com/cd/B12037_01/server.101/b10759/functions116.htm
1
ここで私はREGEXP_SUBSTRを使用して試してみましたがマルチセットレベルに本当に感謝
with temp as
(
select id, name, address, change from testemp
)
select id,name,address,trim(regexp_substr(change, '[^,]+', 1, levels.column_value)) change
from temp t,
table(cast(multiset(select level from dual
connect by level <= length (regexp_replace(change, '[^,]+')) + 1)
as sys.OdciNumberList)) levels;
関連する問題
- 1. 日付クエリに基づいてSQL行をカウントする
- 2. 別のSQLクエリの結果に基づいてクエリを実行する
- 3. 親テーブルの列に基づくSQLクエリ
- 4. SQL:列に基づいて一意の行を更新する
- 5. 2列に基づいて行を列に動的に変換するMysqlクエリ
- 6. は、クエリ文字列に基づいて
- 7. ループ、配列を、配列の各エントリの前のクエリの結果に基づいて、私のSQLクエリを実行
- 8. サーバー時間に基づいてSQLクエリをトリガーする
- 9. SQL Reporting Servicesのパラメータに基づいてクエリを編集する
- 10. SQLクエリ - カウント条件に基づいてレコードを選択する
- 11. SQLのパラメータに基づいてクエリを変更する方法
- 12. カウントに基づいてSQLクエリを停止する
- 13. 月額に基づいてカウントを取得するSQLクエリ
- 14. sql - @curRow列に基づいて
- 15. xmlファイルの属性に基づいてSQLテーブル行を削除するクエリC#
- 16. SQLテーブル内の2つのレコードに基づいて1つのテーブルからレコードをフェッチするクエリ
- 17. Enterprise Architect:タグ付き値に基づいてパッケージ/要素をフェッチするMy SQLクエリ
- 18. 最大値に基づいてフィルタリングするSQLクエリ
- 19. URLに基づいて異なるMySQLクエリを実行する
- 20. where句に基づいたsqlクエリの列名
- 21. ボタンアクションに基づいてSQLクエリを変更します。
- 22. SQL Serverクエリの場所に基づいて列を選択します。
- 23. 列に基づいて重複する行を削除する方法SQL
- 24. 曜日に基づいてクエリを実行する
- 25. 異なる列の値に基づいて行全体を返すLinqクエリ
- 26. 列の値に基づいてクエリの結果から行を除外する
- 27. SQL - 単一の列を分離し、列データに基づいて新しい列を作成するクエリ。
- 28. SQL Server:クエリで収集された値に基づいて行を選択
- 29. SQL 2つ以上の列に基づいて行を削除する
- 30. 他の既存の行に基づいて列を更新するSQL UPDATEステートメント
完璧@danielのlangemannが含まれています。 –