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, -..
오라클에서 문자열의 날짜를 TO_DATE 함수를 사용하여 날짜 형식으로 변경할 때 형식이 맞지 않으면 "ORA-01839: 지정된 월에 대한 날짜가 부적합합니다" 라는 오류가 발생한다. 문자열을 날짜 형식으로 변환하기 전에 미리 날짜 형식이 맞는지 체크를 한 후 변환을 해야 오류 발생을 방지할 수 있다. 오라클 12c R2부터는 형식 체크 함수가 생겨서 쉽게 체크할 수 있지만, 이하 버전에서는 형식 체크 방법을 직접 구현해야 한다. 문자열 날짜 형식 체크 방법 3가지 VALIDATE_CONVERSION 함수를 사용하는 방법 (오라클 12c R2 이상) IS_DATE 사용자 정의 함수를 생성하여 사용하는 방법 (모든 버전) REGEXP_INSTR 정규식 함수를 사용하는 방법 (오라클 10g 이상) VAL..
오라클에서 문자열에서 특정 문자의 개수를 구하기 위해서는 아래의 2가지 방법을 사용하면 쉽게 구할 수 있다. 특히 값을 특수문자로 구분하여 하나의 컬럼에 저장하였을 경우 값의 개수를 구할 때 유용하게 사용할 수 있다. REGEXP_COUNT 함수를 이용하는 방법 (오라클 11g 이상) SELECT REGEXP_COUNT('A/B/C/D', '/') FROM dual 위의 예제는 문자열에 포함된 슬래쉬("/") 개수를 세는 방법이다. 오라클 11g부터 사용 가능한 REGEXP_COUNT 정규식 함수를 사용하여 문자열에 포함된 특정 문자 개수를 쉽게 구할 수 있다. 오라클 버전이 11g 아래 버전이면 아래 두 번째 방법을 사용해야 한다. SELECT REGEXP_COUNT('A,B,C', ',') --쉼표 ..
오라클에서 그룹별로 합계를 구할 때는 SUM 함수를 사용한다. 기본적으로 GROUP BY 절을 사용하여 그룹별로 합계를 구하며, GROUP BY 절을 사용하지 않고 OVER 절을 사용하면 데이터를 그룹화하지 않고 조회된 각 행에 그룹별 합계를 표시할 수 있다. 합계나 소계를 새로운 행으로 표시하고 싶다면 ROLLUP, GROUPING SETS을 사용하면 된다. 그룹별 합계 - 1 (GROUP BY 절) SELECT SUM(sal) FROM emp SELECT 절에 집계 함수(SUM, MAX, COUNT 등)만 있으면 GROUP BY 절을 사용하지 않아도 집계가 된다. 직군별 합계 SELECT job , SUM(sal) FROM emp GROUP BY job SELECT 절과 GROUP BY 절에 그룹별로..
오라클에서 문자열을 뒤에서부터 자르기 위해서는 SUBSTR 함수를 사용하면 된다. SUBSTR 함수의 시작 위치 부분에 음수로 자를 길이를 대입하면 문자열의 오른쪽에서부터 문자열을 자른다. MSSQL의 RIGHT 함수와 비슷한 기능이다. 문자열 뒤에서 자르는 방법 SELECT SUBSTR('Oracle Database', -8) FROM dual SUBSTR 함수에 시작위치를 음수("-")로 대입하면 뒤에서부터 문자열을 자를 수 있다. SUBSTR("문자열", "자를 길이(음수)") 문자열의 길이가 일정하지 않은 경우 SELECT SUBSTR('010-4321-9876', -4) , SUBSTR('010-321-6789', -4) FROM dual 문자열의 길이가 일정하지 않지만 뒤자리의 길이가 일정한 ..
오라클에서 문자열을 숫자형으로 변환하기 위해서는 TO_NUMBER 함수와 CAST 함수를 사용할 수 있다. 문자열에 수치 값 외에 문자가 포함되어 있으면 형 변환 시 오류가 발생하는데, 오류를 미리 예방하기 위해서 다양한 방법을 사용할 수 있으며 자주 사용하는 방법 몇 가지를 설명해 두었으니 아래를 참고하면 된다. 문자열 숫자 변환 1. TO_NUMBER 함수 SELECT TO_NUMBER('12345') , TO_NUMBER('12345.67') FROM dual TO_NUMBER 함수를 사용하면 문자열을 쉽게 숫자(정수, 실수)로 변환이 가능하다. 2. CAST 함수 SELECT CAST('12345' AS NUMBER(10)) , CAST('12345.56' AS NUMBER(10)) , CAST(..
오라클에서 특정 문자열의 포함 여부를 확인할 때 LIKE 연산자와 INSTR 함수를 사용한다. LIKE 연산자는 조건절(WHERE)에서 특정 문자열이 포함된 데이터를 찾을 때 사용하며, INSTR 함수는 특정 문자열이 포함된 위치를 반한 하므로 특정 문자열을 자를 때 많이 사용한다. LIKE 연산자를 사용하여 문자열 포함 여부 확인 SELECT * FROM emp WHERE ename LIKE '%MI%' LIKE 연산자는 조건절(WHERE)에서 컬럼에 특정 문자열이 포함되었는지 확인할 때 많이 사용한다. 문자열을 찾으면 true, 못찾으면 false를 반환한다. CASE 표현식에 사용 SELECT empno , ename , CASE WHEN ename LIKE '%MI%' THEN 'Y' ELSE '..
오라클에서 문자열의 길이를 구하기 위해서는 LENGTH 함수를 사용한다. LENGTH 함수는 입력된 문자열의 글자 수를 반환하고 LENGTHB 함수는 바이트 수로 반환한다. LENGTHB 함수는 시스템 문자셋 설정에 따라서 한글을 2byte 또는 3byte로 계산하므로 주의해야 한다. LENGTH 함수 (글자 수) SELECT LENGTH('오라클') , LENGTH('오라클 SQL') FROM dual LENGTH 함수를 사용하면 영문, 한글, 공백(특수문자 등) 모두 1자리로 계산된다. LENGTH 함수는 조건절이나 조건문에서 많이 사용하므로 아래의 예제를 참고하기 바란다. 조건절(WHERE)에 사용 SELECT ename , job , deptno FROM emp WHERE LENGTH(ename)..
2021년 7월 IT 세미나/컨퍼런스 일정 7월 3일(토) Google IO Extended 2021 Korea Android 14:00~17:00 온라인 7월 5일(월) 2021 CodeEngn Conference 17 7월5일~6일 온라인 7월 7일(수) 쿠팡 출신 개발자의 A/B 테스트 플랫폼 MVP 개발기 19:00~20:00 온라인 7월 8일(목) [Talk&Talk] Fireside chat with MongoDB! 11:00~12:00 온라인 7월 15일(목) 브라운백 - 메타버스 시대가 온다 12:30~13:30 온라인 7월 15일(목) 2021 플레이엑스포 7월15일~18일 온라인 7월 22일(목) 인간 중심, 미래 모빌리티를 꿈꾸다 15:30~17:30 온라인 7월 22일(목) 개발자와..