如何在SQL / PLSQL中将带逗号的字符串转换为枚举

时间:2013-02-28 07:58:28

标签: sql oracle plsql

我有一个有趣的问题。

如何将'1,4'转换为枚举1,4,以便能够在表达式中传递它:

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

#ARGUMENT#'1,4'

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

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

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

2 个答案:

答案 0 :(得分: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上发现了这个。但我无法再找到链接给原作者的信用。如果有人知道,我很乐意用原始

的链接替换它

答案 1 :(得分:1)

SELECT 
      DICT_ID AS ITEM_ID 
   FROM 
      DICTIONARY 
   WHERE 
      INSTR(','||#ARGUMENT#||',', ','||SERIAL_NUMBER||',') > 0