2

我有一个有趣的问题。

我怎样才能'1,4'变成 enum1,4以便能够以这样的表达式传递它:

SELECT DICT_ID AS ITEM_ID FROM DICTIONARY WHERE SERIAL_NUMBER IN (#ARGUMENT#) 

#ARGUMENT#在哪里'1,4'

简而言之,我想让这个查询像我们传递的不是字符串而是数字一样工作。

为什么我传递 '1,4' 而不是传递数字 - 不是我在查询中传递这个字符串,而是一些应用程序。

我可以编辑查询,但不能编辑#ARGUMENT#

4

2 回答 2

3

就像是:

select dict_id as item_id
from dictionary d
where serial_number in  (
     select to_number(regexp_substr ('1,2,3,4','[^,]+',1,level)) as id
     from dual
     connect by regexp_substr ('1,2,3,4','[^,]+',1,level) is not null
)

注意:我前段时间在 SO 上发现了这个。但是我再也找不到链接来感谢原作者了。如果有人知道,我很乐意将其替换为原始链接

于 2013-02-28T08:18:40.830 回答
1
SELECT 
      DICT_ID AS ITEM_ID 
   FROM 
      DICTIONARY 
   WHERE 
      INSTR(','||#ARGUMENT#||',', ','||SERIAL_NUMBER||',') > 0
于 2013-02-28T08:14:08.923 回答