MySQL:要在 WHERE 子句中使用的拆分字符串 SQL

Adn*_*nan 0 mysql sql jasper-reports

我正在寻找一种在 JasperReport 中使用 IN 关键字的方法。我的查询看起来像:

SELECT * FROM table_name WHERE CID IN (145,45, 452);
Run Code Online (Sandbox Code Playgroud)

在 jasper report 之后,我可以设置它;

SELECT * FROM table_name WHERE CID IN ($P{MY_CIDS});
Run Code Online (Sandbox Code Playgroud)

从我的 Java 中,我将$P{MY_CIDS}作为发送String,所以我的查询看起来像

SELECT * FROM table_name WHERE CID IN ("145,45, 452");
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在SQL转换"145,45, 452" 为有效的查询,以便它会考虑到每个单独的值14545452

感谢所有帮助。

zer*_*kms 5

WHERE FIND_IN_SET(CID, "145,45,452")
Run Code Online (Sandbox Code Playgroud)

但是这个查询总是会导致表全扫描。所以我建议你重写你的代码并使用正确的IN (A, B, C)语法。