这条SQL语句存在问题
SELECT * FROM supe_productitems s where s.catid in(getChildLst(12));通过这样的函数调用,可以取得值,但是上面那个sql语句怎么就查不到呢,是不是mysql不支持这样的调用啊
select getChildLst(12);
调用结果:'$',12,18,19,20我把结果放入一下sql语句就可以查得到啊
SELECT * FROM supe_productitems s where s.catid in('$',12,18,19,20);
我想我已经描述的很详细了,请帮忙找找问题啊,谢谢

解决方案 »

  1.   

    1、用动态执行SQL语句方法;
    2、SELECT * FROM supe_productitems s where find_in_set(s.catid,getChildLst(12))
      

  2.   

    SELECT * FROM supe_productitems s where FIND_IN_SET(s.catid,getChildLst(12))
      

  3.   

    由于你的getChildLst(12) 返回的是一个字符串,是一个值而不是一个列表,所有 IN 比较时,只是和这一个值比如 ‘12,18,19,20’ 来做比较。所以不行。换成FIND_IN_SET(s.catid,getChildLst(12))就可以了。提前是你的 getChildLst(12) 返回什么样形式的字符串。如果不是,分割,需要用replace转换一下。