MySQL - sql多條件查詢拼接
阿新 • • 發佈:2020-12-09
sql多條件查詢拼接(Java)
僅提供思路
E(頻繁訪問資料庫查詢部分資料) < E(單次訪問所有資料 + 再處理)
sql拼接規範
一:思路
/**
* @author xux
* @date 2020-12-07 20:51
*/
public class P02_SplitAndMerge {
public static void main(String[] args) {
String[] data = new String[]{"a89e8fd5a4sss5s9er8s45", "r56e1fd5a4srr5s9er89ds" , "tr47ufd5a4srr5s6rg7udt"};
StringBuilder ids = new StringBuilder();
for(int i=0; i<data.length; i++){
ids.append(data[i]);
ids.append(",");
}
// [from, to)
String idss = ids.substring(0, ids.length()-1);
String[ ] ids1 = idss.split(",");
StringBuilder sb = new StringBuilder();
for(int i=0; i<ids1.length; i++){
sb.append(" ID='" +ids1[i]+ "' ");
sb.append("OR ");
}
sb = sb.replace(sb.length()-3,sb.length()-1," " );
StringBuilder sql = new StringBuilder();
sql.append("SELECT ");
sql.append(" * ");
sql.append("FROM ");
sql.append(" MAT_INFO ");
sql.append("WHERE ");
sql.append(sb);
// SELECT * FROM MAT_INFO WHERE ID='a89e8fd5a4sss5s9er8s45' OR ID='r56e1fd5a4srr5s9er89ds' OR ID='tr47ufd5a4srr5s6rg7udt'
System.out.println(sql);
}
}
二:sql拼接規範
拼接字串使用StringBuffer/StringBuilder
全大寫
- SELECT、FROM、WHERE
頂行
,隨後內容空兩個空格
- 每個sql字串後
新增一個空格
- LEFT JOIN之類連線查詢語句要
換行
遇到AND換行
,在上一行語句基礎上再在開頭新增兩個空格
- SELECT查詢結果別名必須加
AS
,其餘別名禁止加AS