首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

Java 將字串陣列轉為 SQL IN 條件字串的兩種實作方式

     編輯:關於SqlServer

需求

將 String[] ids = {"4","5","6"} 轉為 '4','5','6',供 WHERE id IN (...) 使用。

方式一:StringBuilder 迴圈(專案原始碼)

StringBuffer idsStr = new StringBuffer();
for (int i = 0; i < ids.length; i++) {
    if (i > 0) idsStr.append(",");
    idsStr.append("'").append(ids[i]).append("'");
}
// 結果:'4','5','6'

方式二:封裝為通用靜態方法(個人改良)

public static String stringArrayToSqlIn(String[] arr) {
    if (arr == null || arr.length == 0) return "";
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < arr.length; i++) {
        sb.append("'").append(arr[i]).append("'");
        if (i < arr.length - 1) sb.append(",");
    }
    return sb.toString();
}

// 測試
public static void main(String[] args) {
    String[] str = {"4", "5", "6"};
    System.out.println(stringArrayToSqlIn(str)); // '4','5','6'
}

安全性警示 ⚠️

直接拼接字串構建 SQL 極易導致 SQL 注入。生產環境務必使用參數化查詢:

// 正確做法:PreparedStatement + 動態佔位符
String placeholders = String.join(",", Collections.nCopies(ids.length, "?"));
String sql = "SELECT * FROM table WHERE id IN (" + placeholders + ")";
PreparedStatement ps = conn.prepareStatement(sql);
for (int i = 0; i < ids.length; i++) ps.setString(i+1, ids[i]);

效能補充

  • 參數化查詢可重複使用執行計畫,效能更佳。
  • IN 列表過長(>1000)可能觸發 SQL Server 限制,建議改用暫存表或 Table-Valued Parameter。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved