还是属于上次那个问题我现在是用左右%来like但穿过来的参数 本身中间就有‘这样就会打破 like的单引号范围,该怎么办?
我是用kettle来做的,貌似里面的js步骤可以解决,但我不会............

解决方案 »

  1.   

    mysql> create table tb(id int,name varchar(20) character set 'gbk');
    Query OK, 0 rows affected (0.05 sec)mysql> insert tb values(1,'liangck');
    Query OK, 1 row affected (0.00 sec)mysql> insert tb values(1,'liang''ck');
    Query OK, 1 row affected (0.00 sec)mysql> select * from tb;
    +------+----------+
    | id   | name     |
    +------+----------+
    |    1 | liangck  |
    |    1 | liang'ck |
    +------+----------+
    2 rows in set (0.00 sec)mysql> SET @param = _gbk'liang''c' collate gbk_bin;
    Query OK, 0 rows affected (0.00 sec)mysql> select @param;
    +---------+
    | @param  |
    +---------+
    | liang'c |
    +---------+
    1 row in set (0.00 sec)mysql> select * from tb where name like concat(@param,'%');
    +------+----------+
    | id   | name     |
    +------+----------+
    |    1 | liang'ck |
    +------+----------+
    1 row in set (0.00 sec)
      

  2.   

    一般来说,都是先对参数预处理一下。比如你PHP/ASP输入的时候就把字符串中的 ' replace为 ''
      

  3.   

    用\转义、两个单引号、CHR(39)