본문 바로가기

DB/MSSQL3

[MSSQL] OFFSET - FETCH 이용하여 페이징 처리 MSSQL 2012 이전 (11.X 미만) 예전의 MSSQL (2012 이전)에서는 페이징 쿼리를 하기 위해서는 보통 ROW_NUMBER() 를 사용하여 정렬순으로 번호를 부여한 다음에 중첩쿼리로 복잡하게 가져오는 방법을 사용했다고 한다. 이 복잡한 방법말고 좀 더 간단한 쿼리를 알아보자. MSSQL 2012 이후 (11.X 이상) # 양식 ORDER BY {정렬 대상 컬럼} OFFSET {건너 뛸 행의 수} ROWS FETCH NEXT {가져올 행의 수} ROWS ONLY ORDER BY를 통해 정렬 기준을 정한 뒤 OFFSET을 통해 건너 뛸 행의 수를 먼저 설정하고 (1부터 가져올 경우 OFFSET 0 ROWS, 11부터 가져올 경우 OFFSET 10 ROWS) FETCH NEXT 에서 몇 개의 행.. 2022. 3. 16.
[MSSQL] @@IDENTITY (자동증가값) PK값 IDX값 반환 MySQL과 마찬가지로 MSSQL(Sql Server)에도 insert 후 바로 PK값을 select 하는 방법이 존재한다. MySQL은 이 포스팅 참고하면 된다. 2021.11.15 - [DB/MySQL] - [MySQL] LAST_INSERT_ID() 오늘 알아보려고 하는 MSSQL은 아래 코드이다. 버전마다 조금씩 다르니, 자신의 버전을 꼭 확인하길 바란다. SELECT @@IDENTITY SELECT @@IDENTITY는 마지막으로 삽입된 ID 값을 반환하는 시스템 함수를 뜻한다. 영향받은 것이 없거나 자동증가 값이 없다면, NULL을 반환한다. 실제 예 INSERT INTO RESULT ( LOCALE , TYPE , TITLE , CONTENTS , SHOW_YN , START_DAY , EN.. 2022. 3. 16.
[MSSQL] 날짜 포맷 변경하기 상황 mybatis를 이용하여 select 문에서 원하는 형식으로 날짜를 가져와야 했다. 근데 log를 찍어보니, 다른 데이터들은 잘 가져오는데 날짜부분만 계속 null값이 떴다. 알아보니, alias를 지정해주지 않아서 생긴 문제였다. 일단 MSSQL에서 사용하는 날짜 포맷 변경방법 부터 알아보자. (Mysql, Oracle과는 문법이 많이 다르다) 1. 날짜 포맷 변경하기 (두가지 방법 중 골라쓰면 됨) 1) CONVERT 함수 사용하기 CONVERT(VARCHAR(10), GETDATE(), 23) // YYYY-MM-DD 이런 형식으로 변환 다른 형식으로 변환을 해야된다면 아래 링크를 참고하자. https://blog.naver.com/anne9/221975613943 2) FORMAT 함수 사용.. 2022. 3. 15.