次のようなクエリがあります。
"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;
}
}
}
}
このコードが機能することを約束しません。また、順序または比較に基づいてwhere条件に対処する必要があります。したがって、Andが見つかったかどうか、テーブルで比較している文字列でないかどうかを確認する必要があります。また、小さい文字と高い文字のどちらを受け取ったかを確認する必要があります。しかし、これは単なる基本的な比較です