자바(Java) 프로그래밍에서 하나의 문자열(String)을 여러 개의 문자열로 나누어 String[] 배열로 변환하는 작업은 매우 흔히 사용됩니다.
특히, 콤마(,)로 구분된 부품 번호 목록, 사용자 입력, 파일 파싱, SQL 파라미터 처리 등 실무에서 자주 등장합니다.
이번 포스팅에서는 String을 String 배열로 변환하는 다양한 방법, 예외 상황 처리,
그리고 PostgreSQL과 JDBC 연동 시 주의할 점까지 자세히 설명합니다.
🔹 기본 사용법: split() 메서드
가장 간단한 방법은 String.split() 메서드를 사용하는 것입니다.
String idNos = "962102W100CA,962102W200CA,962102W300CA";
String[] idNoArray = partNos.split(",");
✅ 결과
partNoArray = ["962102W100CA", "962102W200CA", "962102W300CA"]
split(",")은 문자열을 콤마(,) 기준으로 나누어 배열로 만듭니다.
🧼 공백 제거까지 하고 싶다면?
입력값에 공백이 섞여 있을 경우, trim() 또는 replace()로 정리해주는 것이 좋습니다.
String idNos = "962102W100CA, 962102W200CA ,962102W300CA";
String[] idNoArray = Arrays.stream(idNos.split(","))
.map(String::trim)
.toArray(String[]::new);
📌 결과
["962102W100CA", "962102W200CA", "962102W300CA"]
🔄 String[] → List 변환도 가능
Java에서는 배열을 리스트로 변환할 수도 있습니다.
List<String> idNoList = Arrays.asList(idNos.split(","));
이 방법은 MyBatis, Spring JDBC, Hibernate 등에서 컬렉션 파라미터로 전달할 때 유용합니다.
⚠️ 실무에서 발생하는 에러: PostgreSQL 연동 시
에러 메시지 예시
org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of java.util.Arrays$ArrayList.
원인
PostgreSQL 드라이버는 Java의 List나 ArrayList를 바로 SQL 쿼리에 넣을 수 없습니다. JDBC에서는 배열을 명확하게 지정해 주어야 합니다.
✅ 해결 방법: PostgreSQL 배열로 전달
JDBC에서 PostgreSQL에 문자열 배열을 전달하려면 아래와 같이 작성합니다:
String[] idNoArray = idNos.split(",");
PreparedStatement ps = conn.prepareStatement("SELECT * FROM test WHERE id_no = ANY(?)");
ps.setArray(1, conn.createArrayOf("text", idNoArray));
ResultSet rs = ps.executeQuery();
여기서 "text"는 PostgreSQL 배열의 타입입니다. 숫자 배열이라면 "integer", "bigint" 등으로 바꿔야 합니다.
🔁 응용 예: SQL IN 절에서 사용하기
자주 쓰이는 예는 SQL의 IN 절입니다. 예를 들어, 부품 번호가 여러 개인 데이터를 조회하고자 할 때 다음과 같이 사용할 수 있습니다:
SQL 예시
SELECT * FROM test WHERE id_no = ANY(?);
Java 예시
String[] idNos = input.split(",");
ps.setArray(1, conn.createArrayOf("text", idNos));
이처럼 split()을 활용하면 사용자의 입력값을 배열로 변환하고, SQL 쿼리에 바로 활용할 수 있습니다.
🧠 마무리 요약
목적 방법 코드
문자열 → 배열 | split(",") | String[] arr = str.split(","); |
공백 제거 포함 | Stream API | Arrays.stream(...).map(...).toArray() |
배열 → 리스트 | Arrays.asList(...) | List<String> list = ... |
PostgreSQL 배열 처리 | conn.createArrayOf() | setArray(1, conn.createArrayOf(...)) |
'스마트웹앱콘텐츠전문가 > JAVA' 카테고리의 다른 글
Logback을 이용한 고급 Java 로깅 기법과 설정 팁 (0) | 2025.04.25 |
---|---|
Java 리플렉션에서 IllegalAccessException 해결하는 방법 (0) | 2025.04.25 |
Enum 없이도 가능한 Java 비교 로직: compareTo() 한 줄로 끝내기 (0) | 2025.04.18 |
효율적인 Java 배열 처리법: null 값 처리와 배열 변환을 위한 코드 예시 (0) | 2025.04.17 |
Java에서 배열 요소까지 검증하려면? 유효성 어노테이션 완전 분석 (0) | 2025.04.09 |