Oracle -关于删除Where-in子句中的单引号的问题



我不知道。我们将我们想要的查询插入到我们内部的企业数据库中,以便用户可以下载他们想要的带有参数的报告。

查询例子

SELECT *
FROM TABLE_A
WHERE name = ?

用户在下载报告时输入参数'abc',系统将问号替换为用户输入的参数

SELECT * FROM TABLE_A WHERE name = 'abc'

但是如果我想让where子句像下面这样,用户输入id列表123,456,789,系统会像下面这样。

WHERE ID in ('123,456,789')

在这种情况下,我怎么做呢?ID不应该是字符串,所以我需要去掉单引号。

WHERE ID in (123,456,789)

请给我一些建议。(我只能更改查询,不能更改后端和前端服务器)

您不需要拆分字符串,使用LIKE并包含分隔符(因此您匹配整个术语而不是部分匹配):

WHERE ',' || ? || ',' LIKE '%,' || id || ',%'

解析为

REGEXP_SUBSTR('?', '[^,]+', 1, level) AS parts
FROM dual
CONNECT BY REGEXP_SUBSTR('?', '[^,]+', 1, level) IS NOT NULL)

相关内容

  • 没有找到相关文章

最新更新