我在mysql中有一个函数,它返回由逗号分隔的整数值列表,从而形成一个字符串。
例如。
MyFunction(23);
退货
----------------------
| MyFunction(23) |
|--------------------|
| 34,45,87,23,1 |
----------------------
这是后端(java)所需的一个简单功能-但是现在,随着新功能的提出,我需要为另一个查询提供这些结果,该查询可能会使用以下in关键字对这些结果进行迭代:
SELECT id, myItemId, myItemValue, myDateTime
FROM
items where id
IN (select MAX(id) from items where myItemId=1
and myItemValue
IN (select MyFunction(123))
group by myItemId);
作为单个csv元素,myfunction(23)的结果是不可编辑的。如果我能使用一些函数 Split(MyFunction(23))
这将产生如下结果将完全适合我的查询没有太多的变化。
以下是我预期的结果:
-----------------------------
| Split(MyFunction(23)) |
|---------------------------|
| 34 |
| 45 |
| 87 |
| 23 |
| 1 |
-----------------------------
另一件需要注意的事情是myfunction()可能返回空的结果或带有单个元素(没有逗号)的结果。
是否有一个内置函数或一个简单的函数,我可以创建得到相同的?
这与stackoverflow上的其他问题不同,因为我的要求非常简单,其他解决方案的派生将是一个过度的工作。类似于split()函数或非常简单的实现。
1条答案
按热度按时间w80xi6nr1#
您可以使用find\ in\ u set函数。例如:
在您的示例中,sql查询将如下所示: