Java 在搜索中处理单引号
如何在java中使用单引号生成查询语句。当我用单引号搜索一个单词时,它显示没有要显示的记录 例如,我有一个名字D'costa,我如何使用java搜索它Java 在搜索中处理单引号,java,oracle,struts2,Java,Oracle,Struts2,如何在java中使用单引号生成查询语句。当我用单引号搜索一个单词时,它显示没有要显示的记录 例如,我有一个名字D'costa,我如何使用java搜索它 getSearchByUserSQL.append("SELECT * FROM SID_USERS "); getSearchByUserSQL.append("WHERE lower(FIRSTNAME) like ? OR lower(LASTNAME) like ?"); 您需要使用\'转义'。这里
getSearchByUserSQL.append("SELECT * FROM SID_USERS ");
getSearchByUserSQL.append("WHERE lower(FIRSTNAME) like ?
OR lower(LASTNAME) like ?");
您需要使用
\'
转义'
。这里的\
是转义字符。您可以使用将
'
替换为\'
Java中的转义序列:
\ b /* \u0008: backspace BS */
\ t /* \u0009: horizontal tab HT */
\ n /* \u000a: linefeed LF */
\ f /* \u000c: form feed FF */
\ r /* \u000d: carriage return CR */
\ " /* \u0022: double quote " */
\ ' /* \u0027: single quote ' */
\ \ /* \u005c: backslash \ */
在Java中,需要用反斜杠转义单引号。对于Oracle,您需要用一个单引号转义一个单引号。因此,
\'\'
应该做到这一点,因此在PL/SQL中,它变成了'
,最后变成了'
getSearchByUserSQL.append("SELECT * FROM SID_USERS ");
getSearchByUserSQL.append("WHERE lower(FIRSTNAME) like \'PETE\'\'S\' OR lower(LASTNAME) like \'REPEAT\'\'S\'");
将“pete's”和“repeat's”作为名字。仅将单引号作为PL/SQL字符串中示例的文本。它被称为“字符串起始”而您可以尝试手动转义所有字符串,这需要大量的工作,而且很困难(不同的数据库可能有不同的转义规则)。作为不应该这样做的进一步证据——看看apahe commons lang——正是出于这个原因,他们放弃了对2.*和3.*之间的SQL转义的支持
因此,如果将查询转换为,则可以使用插入动态值而不是占位符,JDBC驱动程序将为您完成所有转义。因此:
String myQuery = "SELECT * FROM SID_USERS WHERE lower(FIRSTNAME) like :1 OR lower(LASTNAME) like :2";
PreparesStatement ps = connection.prepareStatement(myQuery);
ps.setParameter(1,"Mickey");
ps.setParameter(2,"Mouse");
results = ps.execute();
你能解释一下如何在javause中转义吗使用
\'
在你想使用'
的地方。这个链接没有为你打开me@jackyesind-为我工作很好。它基本上就是J2SE6Javadoc+1。但是关于注释,如果是6,那么应该是JavaSE6,而不是J2SE6()。第二条不见了:)