Database 使用“请参阅”在Oracle中选择一长串参数

Database 使用“请参阅”在Oracle中选择一长串参数,database,oracle,Database,Oracle,我在oracle db的select in子句中使用了一个很长的选择列表,它给了我一个错误声明 SP2-0027:输入太长>2499个字符-忽略行 有没有更好的方法获取这些数据 我的问题是这样的 select * from clicks where click_id in( ''comma seperated list ''); 逗号分隔列表类似于“1”、“2”、“3”、“4”…。用子查询替换逗号分隔的列表: select * from clicks where click_id in( SE

我在oracle db的select in子句中使用了一个很长的选择列表,它给了我一个错误声明

SP2-0027:输入太长>2499个字符-忽略行

有没有更好的方法获取这些数据

我的问题是这样的

select * from clicks where click_id in( ''comma seperated list '');

逗号分隔列表类似于“1”、“2”、“3”、“4”…。

用子查询替换逗号分隔的列表:

select * from clicks where click_id in( SELECT click_id ...);

用子查询替换逗号分隔的列表:

select * from clicks where click_id in( SELECT click_id ...);

用SubSELECT语句替换逗号分隔的列表

WHERE click_id IN ( SELECT id FROM the_interesting_clicks WHERE ... )

[ORACLE]也许您需要一个全局临时表来处理这种情况:它们的内容是事务或会话的本地内容,具体取决于您声明表的方式。因此:使用准备好的INSERT语句加载临时表,并多次调用该语句,然后使用subselect。

用subselect语句替换逗号分隔的列表

WHERE click_id IN ( SELECT id FROM the_interesting_clicks WHERE ... )
[ORACLE]也许您需要一个全局临时表来处理这种情况:它们的内容是事务或会话的本地内容,具体取决于您声明表的方式。因此:使用准备好的INSERT语句加载临时表,并多次调用该语句,然后使用subselect。拆分列表。例如:

select * from clicks
where click_id in ('1','2','3','4')
or click_id in ('5','6','7','8');
等等。

拆分列表。例如:

select * from clicks
where click_id in ('1','2','3','4')
or click_id in ('5','6','7','8');

等等。

这是SQL*Plus的错误,而不是SQL。只需在字符2500之前添加一个换行符。或者在不同的环境(如SQL Developer)中执行该语句

与@John Doyle建议的类似,尽管您不需要使用单独的条件:

select * from clicks
where click_id in ('1','2','3','4',
'5','6','7','8');

这是SQL*Plus的错误,而不是SQL。只需在字符2500之前添加一个换行符。或者在不同的环境(如SQL Developer)中执行该语句

与@John Doyle建议的类似,尽管您不需要使用单独的条件:

select * from clicks
where click_id in ('1','2','3','4',
'5','6','7','8');

我在网上没有写的特权db@TopCoder:如何建立ID列表?是否可以推迟到数据库?我从DW获得数据,我面临同样的限制,因此我没有对数据库的写入权限db@TopCoder:如何建立ID列表?它能被推迟到数据库吗?我从数据仓库得到数据,我在那里面临同样的限制