0

「like」キーワードを使用すると、テーブルからバックスラッシュを選択できません。それはダービーデータベースで正常に動作しているので、SQLが間違っているのでしょうか? またはバックスラッシュはh2で特別な意味を持っていますか? ありがとうございました:)

public class HelloWorld {
public static void main(String... args) throws Exception {
    // delete the database named 'test' in the user home directory
    DeleteDbFiles.execute("~", "test", true);
    Class.forName("org.h2.Driver");
    Connection conn = DriverManager.getConnection("jdbc:h2:~/test");
    Statement stat = conn.createStatement();
    stat.execute("create table test(" +
            "id int primary key, " +
            "name varchar(255))");
    try {
        int id = 1;
        String name = "\\";
        stat.execute("insert into test values("+id+",'"+name+"')");
        ResultSet rs = stat.executeQuery("select * from test");
        while(rs.next()) {
            System.out.println(rs.getString(1)+" "+rs.getString(2));
        }
        ResultSet rs2 = stat.executeQuery(
              "select * from test where name like '"+name+"%'");
        // ResultSet rs2 = stat.executeQuery(
              "select * from test where name = '"+name+"'");
        while(rs2.next()) {
            System.out.println(rs2.getString(1)+" "+rs2.getString(2));
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    stat.close();
    conn.close();
}
}
4

1 に答える 1

3

バックスラッシュは、LIKE 条件のデフォルトのエスケープ文字です

2 つのバックスラッシュを使用する必要があると思います。つまり、Java 内では、"\\\\". または、代わりにLIKE '\' ESCAPE ''(エスケープ文字を使用しない場合) を使用します。

于 2012-08-01T15:44:12.917 に答える