拼接SQL的时候不注意特殊字符就很容易出现这样的错误。所以我比较倾向于用过程来进行纪录的处理,作为参数传递的字符串中即使有特殊字符也不会出现问题。如果还是喜欢用拼接字符串,必须对字符串进行处理,过滤掉单引号、_号(通配符,表示任意一个字符)、%(通配符,表示任意长度的字符串)。后面两个字符如果不处理,在拼接SELECT语句的时候可能会出错。

解决方案 »

  1.   

    如果方便的话,可以在插入数据前,将数据中的单引号换为全角的‘,即不影响数据内容,又不会在拼接SQL的时候产生麻烦。
      

  2.   

    对oracle的作用符号还是用相应的自定义符号替代,当输出时把相应自动义符号转变为敏感符号。SQL> select replace('123%24','%','@') from dual;REPLACE('123%24','%','@')
    -------------------------
    123@24输出时把它转变为%