单引号必须用来包含字符串,不能用于分隔标识符。 
如果字符串包含单引号,则需要在单引号前再增加一个单引号:SELECT * FROM "My Table"
WHERE "Last Name" = 'O''Brien'

解决方案 »

  1.   

    只能在前台通过类似replace的函数将变量中的'换成''
    达到:
    select * from table1 where aa='aa''aaa'
    就OK了!
      

  2.   

    那只能在SELECT之前判断了!!
      

  3.   

    谢谢你的解答!不过我这里所说的只是一种情况,其余的比如用户输入的字符串中有“>,<@”等等与SQL语句中定义的字符相冲突的情况下,我该如何处理?我想编一个函数,将用户可能输入的特殊字符转换为SQL可以识别的相应字符,请问谁有比较好的解决方案呢?
      

  4.   

    我这里看见过一个简单的函数,是解决向HTML进行输入的:
    public static String toHTMLString(String in) {
            StringBuffer out = new StringBuffer();
            for (int i = 0; in != null && i < in.length(); i++) {
                char c = in.charAt(i);
                if (c == '\'') {
                    out.append("&#39;");
                }
                else if (c == '\"') {
                    out.append("&#34;");
                }
                else if (c == '<') {
                    out.append("&lt;");
                }
                else if (c == '>') {
                    out.append("&gt;");
                }
                else if (c == '&') {
                    out.append("&amp;");
                }
                else {
                    out.append(c);
                }
            }
            return out.toString();
        }那位大侠能给我一个比较详细的对应表,类似于:
    '   :    ''             将'换成''
    --------------------------------
    万分感谢!!!
      

  5.   

    public static String toHTMLString(String in) {
            StringBuffer out = new StringBuffer();
            for (int i = 0; in != null && i < in.length(); i++) {
                char c = in.charAt(i);
                if (c == '\'') {
                    out.append("''");
                }
                else {
                    out.append(c);
                }
            }
            return out.toString();
        }
    试试!
      

  6.   

    你是java吗?试试换成"
    String s="aaa'aaaa";
    s.replace('\'','"');