2016-04-15 72 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」是在我的系統中動態顯示的。上面的解決方案幫助了我..謝謝 –