请教一个SQL问题

[复制链接]
查看11 | 回复9 | 2005-8-4 01:01:32 | 显示全部楼层 |阅读模式
希望用一个SQL实现下面要求

key f1 f2 。。。
检索条件为key的list,检索的结果类似于表的key与这个list作外部结合。
keylist有几个key,检索结果有几条,key存在的话,相关内容检索出来。
觉得一个SQL肯定可以实现,只是在下搞不定,那位兄弟帮下忙,谢谢
回复

使用道具 举报

千问 | 2005-8-4 01:01:32 | 显示全部楼层
怎么没兄弟理啊,

再说清楚点。
假设表T里数据
key f1 f2
01 1 1
02 2 2
检索条件keylist如果为{'01', '02', '03'},希望检索出如下结果
key f1 f2
01 1 1
02 2 2
03 null null
用select * from T where key in ('01', '02', '03')达不到要求,
xdjm谁有好办法?
回复

使用道具 举报

千问 | 2005-8-4 01:01:32 | 显示全部楼层
这个简单啊,写个函数把字符串转成表,然后做外连接。
回复

使用道具 举报

千问 | 2005-8-4 01:01:32 | 显示全部楼层
我是希望用一个sql搞定
回复

使用道具 举报

千问 | 2005-8-4 01:01:32 | 显示全部楼层
我倒,我说的就一个SQL搞定啊。但是你必须要自定义一个函数才行,将字符串转变为ORACLE内部表。
给你个例子:
select * from (
select column_value id from table(StrtoTable('f1,f2,f3')) a,table b)
where a.id=b.id(+)
回复

使用道具 举报

千问 | 2005-8-4 01:01:32 | 显示全部楼层
怎么看不明白
回复

使用道具 举报

千问 | 2005-8-4 01:01:32 | 显示全部楼层
谢谢回复,不过你说的自定义函数方法肯定不允许用的。
还有别的办法么?
回复

使用道具 举报

千问 | 2005-8-4 01:01:32 | 显示全部楼层
最初由 duckcn 发布
[B]谢谢回复,不过你说的自定义函数方法肯定不允许用的。
还有别的办法么? [/B]

自定义函数不允许?定义一个函数有什么负作用?那Oracle的函数你用不用?
回复

使用道具 举报

千问 | 2005-8-4 01:01:32 | 显示全部楼层
oracle的函数应该可以用。
回复

使用道具 举报

千问 | 2005-8-4 01:01:32 | 显示全部楼层
这样做就等于凭空增加记录,理论上直接用一个SQL不可能实现,除非检索条件keylist为固定值或数量很少,用select list from dual去拼成一个表,但这样不适用于实际开发,没有什么讨论的价值。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行