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 : 문자열의 오른쪽 공백을 제거 문자열의 ..
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 FOR..
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] 위의 세 가지 함수를 사용하여 날짜에서 쉽게 년, 월, 일을 추출할 수 있다. 그러나 반환 값이 정수이므로 문자열과 합치게 되면 오류가 발생한다. 반환 값을 문자열과 합치는 방법 SELE..
SQL Server에서 문자열을 합칠 때는 CONCAT 함수와 더하기(+) 연산자를 사용한다. 문자열을 합칠 때는 되도록이면 CONCAT 함수를 사용할 것을 권장하지만, 더하기 연산자를 사용하는 것이 더 익숙하기 때문에 더 많이 사용하는 듯하다. 더하기 연산자를 사용할 때는 주의사항이 있으니 아래를 참고하기 바란다. CONCAT 함수 사용하여 문자열 합치기 SELECT CONCAT('SQL', 'Server', '2019') AS str1 , CONCAT(2021, 12, 31, 23, 59, 59) AS str2 CONCAT 함수는 많은 데이터베이스에서 사용 가능한 ANSI SQL 함수이며, CONCAT 함수에 입력된 값은 문자형으로 변환 후 합치는 작업이 이뤄진다. 숫자와 문자가 함께 입력되어도 오류..
SQL Server에서 문자열을 자르기 위해서는 SUBSTRING, LEFT, RIGHT 세 가지 함수를 사용할 수 있다. 오라클에서는 SUBSTR 함수 하나로 위의 세 가지 함수 기능을 모두 할 수 있지만, SQL Server에서는 위의 세 가지 함수를 적절히 잘 사용해야 한다. SUBSTRING("문자열", "시작위치", "길이") : 지정한 위치에서 지정한 문자열 길이만큼 자를 때 사용 LEFT("문자열", "길이") : 왼쪽에서부터 지정한 문자열의 길이만큼 자를 때 사용 RIGHT("문자열", "길이") : 오른쪽에서부터 지정한 문자열의 길이만큼 자를 때 사용 기본 사용법 SUBSTRING 함수 SELECT SUBSTRING('SQL Server 2019', 1, 3) AS str1 , SUBST..
SQL Server에서는 현재 날짜와 시간을 가져오기 위해서는 GETDATE 함수를 사용한다. 다른 데이터베이스의 SYSDATE나 NOW() 함수와 비슷하다. SQL Server 2012부터 SYSDATETIME 함수가 추가되었으며 GETDATE 함수보다 더 정밀한 시간을 반환한다. 아래는 두 함수를 간단하게 비교하여 정리한 내용이다. GETDATE() vs SYSDATETIME() SELECT GETDATE() AS [GETDATE] , SYSDATETIME() AS [SYSDATETIME] GETDATE 함수는 datetime 타입의 밀리초(3자리)를 반환한다. SYSDATETIME 함수는 datetime2 타입의 100나노초(7자리)를 반환한다. SYSDATETIME 함수가 조금 더 정밀한 시간을 ..
SQL Server 2012부터 이전 행과 다음 행의 값을 가져올 수 있는 LAG, LEAD 함수가 추가되었다. LAG 함수를 사용하면 이전 행의 값과 현재 행의 값을 비교하여 값이 변경되었는지 쿼리상에서 쉽게 판별이 가능하다. 기본 사용법 이전 행 값 (LAG) SELECT empno , ename , job , LAG(job) OVER(ORDER BY job, empno) AS job_prev FROM emp WHERE job IN ('MANAGER', 'ANALYST', 'SALESMAN') ORDER BY job, empno LEAD 함수를 사용하여 이전 행의 값을 가져올 수 있다. WHERE 절 하단의 ORDER BY의 정렬 순서와 상관없이 OVER 절 내부의 ORDER BY 기준으로 정렬 후 ..
SQL Server에서 시작일자와 종료일자 사이의 일수 또는 시간, 분, 초 등의 차이를 계산할 때 DATEDIFF 함수를 사용한다. DATEDIFF 함수는 두 날짜를 비교하여 DATEPART 구분자에 따라서 차이를 계산하여 결과를 정수로 반환한다. 날짜 차이 계산 SELECT DATEDIFF(DAY, '2021-06-12', '2021-07-13') AS [일차이] , DATEDIFF(MONTH, '2021-06-12', '2021-07-13') AS [개월차이] , DATEDIFF(YEAR, '2021-06-12', '2021-07-13') AS [년차이] DAY : 시작일자와 종료일자 사이의 일수를 반환 MONTH, YEAR : 월, 년이 바뀐 횟수를 반환 (주의: 30일을 1개월 또는 365일을 ..
SQL Server에서는 날짜, 시간을 더하거나 빼기 위해서는 DATEADD 함수를 사용한다. 현재 날짜에서 하루를 빼서 전일 데이터를 조회할 수 있으며, 일자외에도 년 월 시간 등 기준일자에 원하는 기간 만큰 쉽게 더하거나 뺄수 있다. 날짜 빼기, 더하기 (년, 월, 일) 일 계산 (DAY) SELECT DATEADD(DAY, -10, '2021-07-12') AS [10일전] , DATEADD(DAY, 10, '2021-07-12') AS [10일후] 월 계산 (MONTH) SELECT DATEADD(MONTH, -1, '2021-07-12') AS [1개월전] , DATEADD(MONTH, 1, '2021-07-12') AS [1개월후] 년 계산 (YEAR) SELECT DATEADD(YEAR, -..
SQL Server에서 날짜 형식에서 년, 월, 일을 분리하거나 해당 날짜의 요일(weekday), 분기 등을 구하기 위해서는 DATENAME 함수를 사용하면 된다. 그리고 올해로부터 며칠째 인지 또는 몇 주째 인지도 구할 수 있다. DATENAME 함수는 DATEPART 함수와 거의 유사하다. 차이라고 하면 DATENAME 함수는 결과를 문자로 반환하고, DATEPART 함수는 정수로 반환한다. 월(month)과 요일(weekday) 부분을 제외하면 두 함수 모두 동일하다. 목차 날짜 분리 하기 시간 분리 하기 요일 구하기 (WEEKDAY) 분기 구하기 (QUARTER) 일 년 기준으로 며칠(일수) 구하기 일 년 기준으로 몇 주인지 구하기 [MSSQL] DATEPART 함수 사용법 SQL Server에..