본문 바로가기

SQL/MSSQL5

[MSSQL] 여러 행의 문자열 결합 – STRING_AGG 사용법 (SQL Server 2017 이상) 여러 행의 문자열을 하나의 행으로 결합해서 보여줘야 할 때,SQL Server에서는 STRING_AGG 함수를 사용할 수 있습니다.(※SQL Server 2017 이상부터 지원) ▶ STRING_AGG 기본 문법STRING_AGG (expression, separator) - expression : 결합할 문자열 컬럼- separator : 문자열을 구분할 문자 (예: ', ' 또는 ' | ') 저는 한 테이블의 일련번호를 기준으로,연결된 다른 테이블의 여러 값을 한 줄로 묶어서 보여주고 싶을 때 사용했습니다. ▶ 예시 - 예시 테이블 (ITEM_TABLE) ORDER_ID ITEM_NAME 1A1B1C2D2E - SQL 쿼리 예제SELECT ord.ORDER_ID, STRING_.. 2025. 6. 2.
[MSSQL] 천 단위(,) 숫자 표기 방법 MSSQL에서 FORMAT()함수를 이용해 숫자에 천단위 쉼표 적용하는 방법을 정리해봤습니다. ■ FORMAT() 함수 사용MSSQL에서는 FORMAT() 함수를 이용해서 숫자를 문자열로 포맷팅할 수 있습니다. ▶ 정수만 천 단위로 표기 (소수점 없음)SELECT FORMAT(1234567, '#,##0') AS Result-- 결과: 1,234,567 ▶ 소수점 둘째 자리까지 표기SELECT FORMAT(1234.5, '#,##0.##') AS Result-- 결과: 1,234.5SELECT FORMAT(1234.00, '#,##0.##') AS Result-- 결과: 1,234 - 0은 자리 고정, #은 값이 있을 때만 표시됨 ✅ 고정된 자릿수로 포맷하고 싶을 때 FORMAT() 함수에는.. 2025. 6. 1.
[iBATIS, MSSQL] INSERT 후 자동 생성된 PK 값 가져오기 MSSQL , INSERT 후 생성된 ID값 조회하는 방법 태그 + @@IDENTITY 사용 MSSQL에서는 IDENTITY(= AUTO_INCREMENT) 속성이 설정된 컬럼이 있으면INSERT 시 해당 컬럼 값은 자동으로 증가합니다.이 경우 PK 값을 직접 넣으려고 하면 오류가 나게 됩니다. 자동으로 증가된 PK 값을 바로 조회하고 싶을 땐 SELECT @@IDENTITY를 사용할 수 있습니다. @@IDENTITYSELECT @@IDENTITY AS pkValue 같은 세션에서 가장 마지막에 생성된 IDENTITY 값을 반환해줍니다.방금 INSERT한 값의 PK를 확인할 때 사용합니다. iBATIS에서 사용 예시 ( 활용) INSERT INTO CUSTOMER_TABLE .. 2025. 5. 31.
[MSSQL] 문자열 분리 함수 "STRING_SPLIT" +CROSS APPLY 응용 (SQL server 2016이상) MSSQL에서 문자열을 구분자로 나눌 때 STRING_SPLIT 함수를 사용할 수 있습니다.(※ STRING_SPLIT은 SQL Server 2016 이상에서만 지원됨) ▶ 간단한 예시SELECT valueFROM STRING_SPLIT('HELLO WORLD TEST',' '); ▶ 결과 STRING_SPLIT 함수는 문자열을 나눠서 각 단어를 한 줄씩 value 컬럼으로 보여줍니다.(컬럼 이름은 항상 value로 나옵니다) ■ 테이블 컬럼 값 분리하기 (CROSS APPLY 활용) 단순한 문자열이 아니라, 테이블 안에 있는 문자열 컬럼을 분리하고 싶을 때는CROSS APPLY를 활용할 수 있습니다. * CROSS APPLY ? 왼쪽 테이블의 각 행마다 오른쪽 함수를 적용해주는 JOIN방식 .. 2025. 5. 30.
[IBATIS] MSSQL 저장 프로시저 호출하기 MSSQL에서 동적 PIVOT을 사용해야 하는 상황이 생겨, 일반적인 DAO 방식으로는 데이터를 처리하기 어려웠습니다.그래서 저장 프로시저(Stored Procedure)를 활용하여 처리해 보았습니다. IBATIS에서 저장 프로시처 호출하는 방법을 정리했습니다. ✅ iBATIS에서 저장 프로시저 호출 방법 📌 예제 * 저는 파라미터를 VO 객체로 전달했기 때문에 parameterClass는 별도로 명시하지 않았습니다.필요할 경우 아래와 같이 명시할 수 있습니다: ✅ Java DAO 코드 예시@SuppressWarnings("unchecked")public List> selectExampleData() { return (List>) list("exampleDA.. 2025. 5. 29.