解決表示式解析為sql 語句時遇到除0錯誤的程式

2021-08-30 08:00:58 字數 1459 閱讀 2418

public class exprssionhandlerimpl implements expressionhandler 

else

result.deletecharat(result.length() - 1);

// 不能用case result when null then null else derivedindex end as

sql = " case when " + result.tostring()

+ " is null then null else " + expression

+ " end as ";

} return sql;

} /**

* * title: dividerfilter

* * * description: 過濾表示式中的除號"/",得到所有的除數集合

* *

* @param expression

* @return

*/private setdividerfilter(string expression)

else if (expression.charat(next) == ')')

next++;

}// 得到第一表示式中第一層的除數

string divider = expression.substring(index + 1, next);

// 使用遞迴逐層得到除數

int index1 = divider.indexof("/", 0);

if (index1 > 0)

dividers.add(divider);

}else while (next < expression.length());

dividers.add(expression.substring(index + 1, next));

}} return dividers;

} public static void main(string args)

}

比較器:

public class mycomparator implements comparator

else if (len1 > len2)

else if (len1 == len2)

else

} return result;

}}

比如表示式:"a/b + (c/d + f/(d+e))/f + g/p"

使用此程式解析後輸出的sql如下所示:

case when  nullif(b,0)*nullif(d,0)*nullif(f,0)*nullif(p,0)*nullif((d+e),0) is null then null else a/b + (c/d + f/(d+e))/f + g/p end as

SQL語句與正規表示式

今兒個才知道sql語句還可以搭配正規表示式作為查詢條件,很是有用。regexp like 匹配 regexp instr 包含 regexp replace 替換 regexp substr 提取 表 1 定位元字元 元字元說明 使表示式定位至一行的開頭 使表示式定位至一行的末尾 表 2 量詞或重複...

SQL語句與正規表示式

今兒個才知道sql語句還可以搭配正規表示式作為查詢條件,很是有用。regexp like 匹配 regexp instr 包含 regexp replace 替換 regexp substr 提取 表 1 定位元字元 元字元說明 使表示式定位至一行的開頭 使表示式定位至一行的末尾 表 2 量詞或重複...

SQL語句之正規表示式

2.1 以特定字串開頭的記錄 2.2 以特定字串結尾的記錄 2.3 包含指定字串的記錄 2.4 以 代替字串中的任意乙個字元的記錄 2.5 匹配包含或者關係的記錄 2.6 匹配前面字元的任意多次 2.7 匹配前面字元至少一次 2.8 匹配指定字符集中的任意乙個 mysql 正規表示式通常是在檢索資料...