我遇到以下问题:
我有一个带有值的序列:
“ORA-00904:TESTE:标识符无效”
我需要在查询中将此测试字段替换为空 ('')。
但是,如果我的查询包含名称为 TESTETE 的其他字段,并且我替换为 '',则它仍然错误,将 TESTE 替换为 ,将 TESTETE 替换为
TE
我想将 TESTE 替换为 ``,而 TESTETE 让它保持原样。
<小时/>我的示例查询是:
从 TBL 中选择 TESTE、TESTETE、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 中选择“”、TESTETE、OUTRO
非常感谢!!!
最佳答案
使用正则表达式并用单词边界 anchor 围绕您的模式。
query = query.replaceAll("\\b"+comp+"\\b", "''");
如果您只想替换该模式的一个实例,请使用 replaceFirst
而不是 replaceAll
。
关于java - 比较字符串时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36648547/