我们的Oracle数据库中有一个遗留表,它有一个以逗号分隔值的列.这些以逗号分隔的值实际上是另一个表的外键.
Table: SCHEDULE
-----------------------
ID NAME DATES
-- ---- -----
1 Test1 10,20,30
2 Test2 20,40
Table: DATES
-----------------------
ID DATE
-- ----
10 2013-01-01
20 2013-02-02
30 2013-03-03
40 2013-04-04
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个返回结果的查询:
ID NAME DATE
-- ---- ----
1 Test1 2013-01-01
1 Test1 2013-02-02
1 Test1 2013-03-03
2 Test2 2013-02-02
2 Test2 2013-04-04
Run Code Online (Sandbox Code Playgroud)
我遇到了DBMS_UTILITY.comma_to_table过程,以及REGEXP_SUBSTR,SPLIT,JOIN等函数.但是我无法实现这一点.这里有什么帮助?
Yuch.但有时你必须处理这个问题.在Oracle中,您可以使用like以下join条件:
select s.id, s.name, d.date
from schedule s join
dates d
on ',' || dates || ',' like '%,' || d.id || ',%';
Run Code Online (Sandbox Code Playgroud)
这效率不高,不会使用索引.但它应该解决你的问题.
注意使用分隔符','.这可以防止10匹配100.
| 归档时间: |
|
| 查看次数: |
989 次 |
| 最近记录: |