본문 바로가기
  • [성공하는 개발자] - Developer
728x90

DataBase52

[MSSQL] 시작일자 종료일자 사이 모든 일자를 조회하는 방법 쿼리문을 작성하다 보면 테이블에 데이터는 없지만 시작일자와 종료일자 사이의 일자(날짜)를 포함하여 조회해야 할 때가 있다. 날짜만 들어있는 테이블을 생성해서 조인하여 사용해도 되지만, 해당 기간의 데이터를 동적 뷰로 생성하여 일시적으로 사용할 수도 있다. 날짜 뷰를 생성하기 위해서는 재귀 쿼리(WITH CTE) 또는 master..spt_values 시스템 테이블을 사용하면 된다. MSSQL 기간내 모든 일자(날짜) 조회 ■ 재귀 쿼리(WITH CTE)로 날짜 뷰 만들기 WITH DateRange(Dates) AS ( SELECT CONVERT(DATE, '2021-12-01') --시작일자 UNION ALL SELECT DATEADD(d, 1, Dates) FROM DateRange WHERE Date.. 2022. 11. 14.
[MSSQL] 공백 제거 방법 (TRIM, LTRIM, RTRIM) SQL Server에서 문자열의 양쪽 공백을 제거하기 위해서는 TRIM, LTRIM, RTRIM 함수를 사용하면 된다. TRIM 함수는 SQL Server 2017 버전부터 지원하므로 이전의 버전에서는 LTRIM과 RTRIM 함수를 동시에 사용하여 문자열의 양쪽 공백을 제거해야 한다. ■ 공백 제거 방법 (TRIM, LTRIM, RTRIM) SELECT TRIM(' SQL Server ') AS [TRIM] , LTRIM(' SQL Server ') AS [LTRIM] , RTRIM(' SQL Server ') AS [RTRIM] TRIM : 문자열의 양쪽 공백을 제거 (SQL Server 2017부터 사용 가능) LTRIM : 문자열의 왼쪽 공백을 제거 RTRIM : 문자열의 오른쪽 공백을 제거 ■ 문.. 2022. 11. 14.
[MSSQL] 숫자 앞에 0 채우기, 자리수 맞추기 (LPAD) SQL Server에서 숫자 앞에 "0"을 채워서 일정한 길이의 문자열을 만들기 위해서는 FORMAT, RIGHT, REPLICATE 함수를 사용하면 된다. SQL Server에는 오라클의 LPAD 함수는 사용할 수 없으므로 아래의 예제를 참고하면 비슷한 효과를 낼 수 있다. ■ FORMAT 함수 사용 (방법1) SELECT FORMAT(1, '00000') AS result1 , FORMAT(12, '00000') AS result2 , FORMAT(123, '00000') AS result3 FORMAT("수치 값", "채울 값") FORMAT 함수는 SQL Server 2012 이상에서 사용할 수 있으므로 이하의 버전에서는 아래의 RIGHT, REPLICATE 함수를 사용해야 한다. SELECT F.. 2022. 11. 14.
[MSSQL] 년, 월, 일 추출 방법 (YEAR, MONTH, DAY) SQL Server에서 날짜 데이터의 년, 월, 일을 추출할 때 사용하는 기본적인 함수는 YEAR, MONTH, DAY이며, 정수로 결과를 반환한다. 앞의 세 가지 함수 외에도 DATENAME, DATEPART라는 함수도 있는데 DATENAME 함수는 결과를 문자로 반환하고 DATEPART 함수는 결과를 정수로 반환한다. ■ YEAR, MONTH, DAY 함수 사용법 SELECT YEAR(GETDATE()) AS [YEAR] , MONTH(GETDATE()) AS [MONTH] , DAY(GETDATE()) AS [DAY] 위의 세 가지 함수를 사용하여 날짜에서 쉽게 년, 월, 일을 추출할 수 있다. 그러나 반환 값이 정수이므로 문자열과 합치게 되면 오류가 발생한다. ■ 반환 값을 문자열과 합치는 방법 .. 2022. 11. 14.
[MSSQL] MERGE 문 사용법 (DUAL, UPDATE와 INSERT를 한번에) MERGE 문을 사용하면 변경할 테이블에 데이터가 존재하는지 체크하고, UPDATE, DELETE, INSERT를 한 번에 작업이 가능하다. MERGE 문을 사용하지 않을 경우 해당 조건으로 테이블을 SELECT 한 후 IF 조건을 사용하여 UPDATE나 INSERT로 분기하는 로직을 작성해야 하는 번거로움이 있다. MERGE 문의 경우 단일(한개의) 테이블에 UPDATE 또는 INSERT를 하는 경우 많이 사용하지만, 두개의 테이블을 비교하거나 서브 쿼리의 결과에 따라서 UPDATE, INSERT 작업이 가능하다. ■ 단일 테이블 사용법 (DUAL)오라클에서는 DUAL이라는 dummy 테이블을 USING 절에 사용하면 단일 테이블 작업이 간단하지만, MSSQL에서는 DUAL 테이블이 없기 때문에 du.. 2022. 11. 7.
[MSSQL] DELETE 문 사용법 3가지 (데이터 삭제) SQL Server에서 테이블의 데이터를 삭제하기 위해서는 DELETE 문을 사용하면 된다. SQL Server에서는 DELETE 문에서 조인을 하여 데이터를 삭제할 수 있으며, 서브쿼리를 사용하여 삭제할 데이터 범위를 조회하여 데이터를 삭제할 수도 있다. MERGE 문을 사용하면 INSERT, UPDATE, DELETE를 동시에 수행할 수 있다. ■ 기본적인 DELETE 방법 DELETE FROM dbo.dept WHERE deptno = 40 부서(dept) 테이블에서 부서코드(deptno) "40"에 해당하는 행을 삭제하는 예제이다. DELETE dbo.dept WHERE deptno = 40 DELETE 문에서는 FROM 키워드를 생략하고 DELETE 키워드 뒤에 테이블명을 기술해도 된다. ■ 다.. 2022. 11. 7.
728x90