2016-04-15 11 views
0

Ich habe ein Problem mit dem folgenden:Ausgabe während Strings Vergleich

Ich habe eine Sequenz, die mit dem Wert kommt:

"ORA-00904: TESTE: identificador inválido"

Ich muss Ersetzen Sie dieses Testfeld in meiner Abfrage durch leer ('').

Aber wenn meine Abfrage anderes Feld mit den zum Beispiel TESTEN Namen enthält und ersetze ich für ‚‘, es staies falsch, TESTET für and TESTETE for TE

ich das TESTET für `` ersetzen ersetzen möge und die TESTEN lassen wie es ist.


mein Beispiel Abfrage ist:

SELECT TESTE, TESTETE, fld1 VON TBL


Meine Logik ist wie folgt:

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

Ergebnis: SELECT '', '' TE, OUTRO VON TBL Erwartetes Ergebnis? SELECT '', TESTETE, OUTRO VON TBL

Vielen Dank !!!

+0

Sie können Ihre comp var auf "TESTE" erweitern und durch "" ersetzen, aber dies wird ein Problem verursachen, wenn das Feld, das Sie ersetzen, das letzte ist (das fehlende "," am Ende der Feldliste) – nabuchodonossor

+0

Ich kann es nicht Freund machen. Weil "TESTE" dynamisch in meinem System kommt. Was ich hier gepostet habe, war nur ein Beispiel. Andere Vorschläge ??? –

Antwort

1

Verwenden Sie reguläre Ausdrücke und umgeben Sie Ihr Muster mit Wortgrenzenankern.

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

Falls Sie nur eine Instanz des Musters zu ersetzen, replaceFirst statt replaceAll verwenden.

+0

Hallo Joni, dein Weg ist gut. Ich könnte mein Problem mit Ihrer Lösung lösen. Vielen Dank! –

0

Versuchen Sie Ihre Variable comp

String comp = "TESTE, "; 

Durch Komma und Leerzeichen ändern es nur die „TESTE“ gelöscht. Sie können zusätzlich Ihre Methode

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

Jetzt

ersetzen ändern müssen Sie eine saubere Abfrage ohne Ihre „TESTE“ und ohne Apostroph!

+0

Dies funktioniert nicht, wenn das zu ersetzende Feld das letzte in der Feldliste ist. Ich schrieb dies auch als Kommentar zu ihm, als du diese Antwort geschrieben hast. – nabuchodonossor

+0

Ich kann es nicht Freund machen. Weil "TESTE" dynamisch in meinem System kommt. Die obige Lösung hat mir geholfen .. danke –