스마트웹앱콘텐츠전문가/JAVA

[Java 기초] 콤마로 구분된 문자열을 String 배열로 변환하는 법

9D4U 2025. 4. 29. 10:57
728x90
반응형

자바(Java) 프로그래밍에서 하나의 문자열(String)을 여러 개의 문자열로 나누어 String[] 배열로 변환하는 작업은 매우 흔히 사용됩니다.

특히, 콤마(,)로 구분된 부품 번호 목록, 사용자 입력, 파일 파싱, SQL 파라미터 처리 등 실무에서 자주 등장합니다.

 

이번 포스팅에서는 String을 String 배열로 변환하는 다양한 방법, 예외 상황 처리,

그리고 PostgreSQL과 JDBC 연동 시 주의할 점까지 자세히 설명합니다.

 

 

 

 

img


🔹 기본 사용법: 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(...))

 

728x90