我遇到以下问题:
我有一个带有值的序列:
“ORA-00904:TESTE:identificadorinválido”
我需要在查询中将此测试字段替换为空('')。
但是如果我的查询包含其他字段,其名称为例如TESTETE,而我替换为'',则表示错误,将{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);
结果:选择'',''TE,OUTRO来自TBL 预期结果? SELECT'',TESTETE,OUTRO FROM TBL
非常感谢!!!
答案 0 :(得分:1)
使用正则表达式并使用单词边界锚点围绕您的模式。
query = query.replaceAll("\\b"+comp+"\\b", "''");
如果您只想替换模式的一个实例,请使用replaceFirst
代替replaceAll
。
答案 1 :(得分:0)
尝试将变量comp更改为
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeZone:[NSTimeZone systemTimeZone]];
[dateFormat setLocale:[NSLocale currentLocale]];
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
[dateFormat setFormatterBehavior:NSDateFormatterBehaviorDefault];
NSDate *date = [dateFormat dateFromString:@"1996-08-09T07:00:00Z"];
NSLog(@"date : %@", date);
[dateFormat setDateFormat:@"yyyy"];
NSString *finalStr = [dateFormat stringFromDate:date];
NSLog(@"finalStr : %@", finalStr);
由于逗号和空格,它只会删除“TESTE”。 您还可以将替换方法更改为
String comp = "TESTE, ";
现在你有一个干净的查询没有你的“TESTE”,没有 撇号!