varchar(500)
测试定义的,不是这个问题的原因,定义这么长怕不够用。

解决方案 »

  1.   

    SELECT * FROM tbl_test_search_pub WHERE likeSql;
    --------------------------------------I think mysql will not parse "likeSql" as a variable here.
      

  2.   

    ....
    两个问题:
    一:如果你的参数真的有那么长,建议直接设置text 因为varchar() 超过200就毫无意义
    二:这种方式是不行的,你必须传递直接的参数进去,在过程中再加起来EXECUTE 可以实现类似sql的sp_executesql 另一个简单的方法
    begin
    -> set sql_mode='ansi';
    -> set @a=concat('%','wawa',‘%’);
    ->SELECT * FROM tbl_test_search_pub WHERE @a;
    -> end
      

  3.   

    试了还是不行,我的likeSql不需要再加%这种符号了,整句已经在传入前生成好了,在存储过程里面整句读取并执行就行了,哎,不知有什么方法能让 likeSql那个被视为变量.
      

  4.   

    因为like语句是由用户输入的数据而确定的,通过循环自动生成的,如果在存储过程里面写好,就是固定的了。我最终的like语句将是a like b or b like c这样,不过最多不会超过四个or,最少二个or,呵呵,谢谢您了。