-4
我有这样的查询:字符串操作在java中
"select * from aaa where id < 10 and name = 'test'"
从这个查询我想以后找出一些条件where
(2在这种情况下)。
另外我想知道<
和=
重复了多少次。
我有这样的查询:字符串操作在java中
"select * from aaa where id < 10 and name = 'test'"
从这个查询我想以后找出一些条件where
(2在这种情况下)。
另外我想知道<
和=
重复了多少次。
,你可以简单地计算全部>和=具有循环
bool whereCondition = false;
int counterCompare = 0;
int counterConditions = 0;
// select is your SQL String
for(int i = 0;i<select.length;++i)
{
if(whereCondition){
if(select.charAt(i) = '<' || select.charAt(i) = '>') {
++counterCompare;
}
if(select.charAt(i) = '=' && !(select.charAt(i+1) = '<' || select.charAt(i+1) = '>')) {
++counterCompare;
}
if (select.charAt(i) = 'A') {
if(i+2 < select.length) {
if(select.charAt(i+1) = 'N' &&
select.charAt(i+2) = 'D')
++counterCondition;
}
}
if (select.charAt(i) = 'O') {
if(i+4 < select.length) {
if(select.charAt(i+1) = 'R' &&
select.charAt(i+2) = 'D' &&
select.charAt(i+3) = 'E' &&
select.charAt(i+4) = 'R' &&)
whereCondition = false;
}
}
}
else {
if (select.charAt(i) = 'W') {
if(i+4 < select.length) {
if(select.charAt(i+1) = 'H' &&
select.charAt(i+2) = 'E' &&
select.charAt(i+3) = 'R' &&
select.charAt(i+4) = 'E' &&)
whereCondition = true;
}
}
}
}
我不保证此代码工作。你还必须根据订单或一个地方的条件来处理和比较。所以你需要检查,如果你发现了一个和,如果它不是你在表中比较的字符串。你还必须检查你是否有小或高的字母。但这只是一个基本的比较
你有没有尝试过吗? –
如果没有完整的SQL解析器,通常很困难。也许这有助于:http://stackoverflow.com/questions/660609/sql-parser-library-for-java – Thilo
难道你不能只计算'AND's和'OR's + 1(对于第一个条件) ? – Kai