有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

比较字符串时出现java问题

我有以下问题:

我有一个值随附的序列:

“ORA-00904:TESTE:Identificator inválido”

我需要在查询中将此测试字段替换为空(“”)

但是,如果我的查询包含另一个名为TESTE的字段,例如TESTE和I replace,则它仍然是错误的,将TESTE替换为and TESTETE forTE

我想替换``的TESTE,让TESTE知道它是什么样子


我的示例查询是:

从TBL中选择TESTE、TESTE、fld1


我的逻辑如下:

String oracleMsg = "ORA-00904: TESTE: identificador inválido";
String query = "SELECT TESTE, TESTETE, OUTRO FROM TBL";
String comp = "TESTE";

if (oracleMsg.contains(comp)){
    query = query.replace(comp, "''");
}
System.out.println(query);

结果:从TBL中选择“”、“”TE、OUTRO 预期结果?从TBL中选择“”、测试、输出

非常感谢


共 (2) 个答案

  1. # 1 楼答案

    使用正则表达式,并用单词边界锚围绕模式

     query = query.replaceAll("\\b"+comp+"\\b", "''");
    

    如果只想替换模式的一个实例,请使用replaceFirst而不是replaceAll

  2. # 2 楼答案

    尝试将变量comp更改为

    String comp = "TESTE, ";
    

    由于逗号和空格,它将只删除“TESTE”。 您还可以将替换方法更改为

    query = query.replace(comp, "");
    

    现在你有了一个干净的查询,没有“TESTE”和 撇号