2016-04-15 59 views
0

我有以下问题:问题而比较字符串

我有自带的价值序列:

“ORA-00904:TESTE:identificadorinválido”

我需要在我的查询中将该测试字段替换为空('')。

但如果我的查询中包含其他字段名称例如TESTETE,我更换了',它staies错误,更换TESTE为and TESTETE for TE

我想更换TESTE的``和TESTETE让它是如何。


我的示例查询是:

SELECT TESTE,TESTETE,FLD1 FROM TBL


我的逻辑如下:

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); 

结果:SELECT '', ''TE,OUTRO FROM TBL 预期结果? SELECT'',TESTETE,OUTRO FROM TBL

非常感谢!

+0

您可以将您的comp var扩展为“TESTE”,并将其替换为'',但是当您替换的字段是最后一个字段(字段列表末尾缺少',')时,这会引发问题。 – nabuchodonossor

+0

我不能做朋友。因为“TESTE”是在我的系统中动态显示的。我在这里发布的只是一个例子。 其他sugestions ??? –

回答

1

使用正则表达式并使用单词边界锚定环绕您的模式。

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

如果你要替换的模式只有一个实例,使用replaceFirst代替replaceAll

+0

你好,乔尼,你的方式很好。我可以解决我的问题与你的解决方案。谢谢! –

0

请尽量把变量补偿改为

String comp = "TESTE, "; 

因为逗号,它会删除只有“TESTE”的空白。 另外,你可以改变你的替代方法

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

现在你有一个干净的查询,而你的“TESTE”,并没有 撇号!

+0

如果要替换的字段是字段列表中的最后一个,这将不起作用。我写这篇文章也是对他写评论的时候你写这个答案。 – nabuchodonossor

+0

我不能做朋友。因为“TESTE”是在我的系统中动态显示的。上面的解决方案帮助了我..谢谢 –