日期:2014-05-17  浏览次数:20638 次

怎样在Java中实现这个需要split的查询
sql语句如下:
String str1="select * from items where "+ItemID+" in (select split(Parentpath,',') from items)";
数据库为mysql,当然mysql中是没有split函数的,网上搜索了一些,都要在mysql中用存储过程自定义split函数,感觉比较麻烦,而且也没有用过mysql的存储过程
解释一下上面的语句:
Parentpath是类似于0,1,2,3的字符串,打算将其用逗号,分隔为数组,然后筛选出这个数组中包含有ItemID值的记录
如果直接用ItemID in Parentpath,则可能出现这种错误,如:
ItemId=8, Parentpath=0,1,18,尽管8和18不同,但由于都有一个8,所以还是会被筛选出来,因此必须先用逗号,分隔。
该如何处理呢
java select sql mysql

------解决方案--------------------

Parentpath LIKE CONCAT('%,',ItemID,',%') OR Parentpath LIKE CONCAT(ItemID,',%')
OR Parentpath LIKE CONCAT('%,',ItemID)

用LIKE实现, 分别对应3中情况