ORACLE用数字分割字符串以用于IN子句

问题描述 投票:0回答:1

我在返回值'1,2,3'的表中有一个名为CONCATENATEDFIELD的字符串字段

我需要在IN子句中使用此字段:

SELECT ID FROM TABLE WHERE STRINGFIELD IN (CONCATENATEDFIELD)

我需要像这样工作:

SELECT ID FROM TABLE WHERE STRINGFIELD IN ('1','2','3')

如何使它起作用?

oracle
1个回答
0
投票

解析可移植的字符串可能很痛苦,因为以某种方式,这将需要某种递归。

您可以改用正则表达式:

where regexp_like(
    concatenated_field,
    '(^|,)' || string_field || (,|$)
)

或简称为like

where ',' || concatenated_field || ',' like '%,' || string_field || ',%'
© www.soinside.com 2019 - 2024. All rights reserved.