오라클 쿼리에서 하나의 칼럼에 여러 개의 값을 한 번에 입력하기 위해서는 IN 연산자를 사용하면 된다. IN 연산자는 OR 연산자를 여러 개 사용하여 쿼리문을 작성하는 것과 동일한 결과를 얻을 수 있다. 오라클에서는 다중칼럼 IN도 지원하기 때문에 아래의 예제를 참고하면 된다. 목차 IN 연산자 사용법 NOT IN 연산자 사용법 NOT IN 연산자 사용 시 주의사항 다중칼럼 IN 사용법 IN 연산자 사용법 SELECT * FROM emp WHERE job IN ('ANALYST', 'MANAGER', 'SALESMAN') job 칼럼에 IN 연산자에 입력된 직업(ANALYST, MANAGER, SALESMAN) 중 하나라도 일치하면 조회된다. IN 연산자는 1000개 값까지만 입력할 수 있으며, 그 이상..
오라클 쿼리에서 여러 행의 값을 하나의 열로 합치기 위해서 WM_CONCAT 함수를 사용할 수 있다. WM_CONCAT 함수는 사용법이 쉽고 중복제거도 되기 때문에 많이 사용했지만 오라클 11g R2부터는 해당 함수를 사용할 수 없으니 사용 시 유의해야 한다. 오라클 11g R2부터는 WM_CONCAT 함수 대신 LISTAGG 함수를 사용할 수 있다. 목차 WM_CONCAT 함수 사용법 LISTAGG 함수 사용법 (대체함수) WM_CONCAT 함수 사용법 SELECT job , WM_CONCAT(deptno) AS deptnos FROM emp WHERE job IN ('MANAGER', 'SALESMAN') GROUP BY job GROUP BY 절과 WM_CONCAT 함수를 사용하여 여러 행의 값을 ..
오라클에서 지난달(전달)의 첫날(1일)과 말일을 구하기 위해서는 TRUNC 함수와 ADD_MONTHS 함수를 사용하여 쿼리문을 복잡하게 작성하지 않아도 쉽게 구할 수 있다. 아래의 예제 외에도 해당 일자를 구할 수 있는 방법은 많이 있으며, 상황에 따라서 편리한 방법을 찾아서 사용하면 된다. 목차 이전달 첫날, 마지막날 구하기 이번달 첫날, 마지막날 구하기 이전달 첫날, 마지막날 구하기 SELECT TO_CHAR(SYSDATE, 'yyyy-mm-dd') AS "현재" , ADD_MONTHS(TRUNC(SYSDATE, 'mm'), -1) AS "이전달 첫날" , TRUNC(SYSDATE, 'mm') - 1 AS "이전달 말일" FROM dual TRUNC("날짜", "mm") 함수를 사용하여 해당 날짜의 ..
오라클에서 ROLLUP 함수를 사용하여 소계, 합계를 구할 수 있다. 그러나 소계를 제외하고 합계만 표시하고 싶을 때는 다양한 방법이 있겠지만, ROLLUP 칼럼을 괄호로 묶어서 합계를 구하는 방법과 GROUPING_ID 함수를 사용하여 필요한 행만 조회되도록 조건을 부여하는 방법을 사용하면 간단하게 소계를 제외할 수 있다. 목차 괄호( ( ) )를 사용하여 합계만 표시하는 방법 GROUPING_ID 함수를 사용하여 소계를 제외하는 방법 괄호( ( ) )를 사용하여 합계만 표시하는 방법 SELECT job , deptno , SUM(sal) FROM emp GROUP BY ROLLUP((job, deptno)) ROLLUP 칼럼 전체를 괄호로 한 번 더 묶으면 총합계만 표시된다. 그룹 칼럼이 많을 경우 ..
오라클에서 문자열에 특수문자가 포함되었는지 검색하기 위해서는 정규식 함수를 사용하면 된다. 오라클 10g부터 정규식 함수를 사용할 수 있으며, [:punct:] 문자 클래스를 사용하면 특수문자를 쉽게 찾을 수 있다. 그 외에도 찾고 싶은 특수문자를 직접 지정하여 검색할 수 있으며, 특수문자가 몇 개 포함되었는지도 확인할 수 있다. 목차 특수문자 포함여부 체크 (공백 제외) 특수문자 포함여부 체크 (공백 포함) 숫자, 소문자, 대문자, 한글을 제외한 문자 체크 지정한 특수문자가 포함되었는지 체크 특수문자 체크 및 개수 세기 (REGEXP_COUNT 함수) 특수문자 체크 및 위치 찾기 (REGEXP_INSTR 함수) 특수문자 포함여부 체크 (공백 제외) WITH temp AS ( SELECT 'abc,ABC..
오라클에서 문자열의 뒤에서부터 특정 문자열을 찾기 위해서는 INSTR 함수를 사용하면 된다. INSTR 함수의 기본 설정은 앞에서부터 문자열을 찾지만, 함수의 마지막 인자에 "-1"을 부여하면 문자열을 뒤에서부터 찾는다. 아래의 예제 쿼리문을 확인하면 아주 쉽게 이해할 수 있을 것이다. 기본 사용법 SELECT INSTR('Oracle, MySQL, SQL Server', 'SQL', -1) AS result FROM dual INSTR("대상 문자열", "찾을 문자열", -1) 함수의 마지막 인자에 "-1"을 부여하면 대상 문자열의 뒤에서부터 검색하며, 첫 번째로 찾은 문자열의 시작 위치를 반환한다. 대상 문자열에 찾을 문자열 "SQL"이 두 번 반복되지만, 뒤에서부터 찾은 문자열의 위치를 반환한다. ..
2023년 7월 IT/개발자 세미나/컨퍼런스 일정 7월 7일(금)2023 C FORUM 이상, 그 이상, 투자, 이상을 현실로 이끌다 13:30~18:40, 코엑스 본관 4층 그랜드 컨퍼런스룸 401호 7월 15일(토)Go To Songdo 2023 13:00~19:00, 송도 구글스타트업캠퍼스, 유료(1만~2만) 7월 29일(토)I/O Extended 2023 Seoul 13:00~17:00, 코엑스 컨퍼런스룸(남) 4F, 유료(1만) 7월 29일(토)제 18회 빅데이터 컨퍼런스 13:00~17:30, 서울시청 서소문별관 후생동 4층 강당 8월 11일(금)파이콘 한국 2023 8월11일~13일, 코엑스 그랜드볼룸 및 아셈볼룸 8월 15일(화)INFCON 2023 10:00~18:00, 코엑스 그랜드볼룸..
SQL Server에서 특정 기준의 소계 및 합계를 구할 때는 GROUPING SETS를 사용하면 쉽게 해결된다. GROUPING SETS는 ROLLUP과 CUBE 보다 더 다양한 합계를 구할 수 있으며 조금 더 기능이 강력하다고 생각하면 된다. 그러나 처음 사용할 때는 조금 복잡하다고 생각될 수 있지만, 괄호 사용법에 대해서 조금만 이해한다면 크게 어렵지 않게 사용할 수 있다. GROUPING SETS 사용법 합계, 총합계 구하기 SELECT job , SUM(sal) FROM emp WHERE job IN ('ANALYST', 'MANAGER', 'SALESMAN') GROUP BY GROUPING SETS(job, ()) GROUPING SETS는 그룹 칼럼을 입력하면 해당 칼럼별(job) 합계가 ..
SQL Server에서 모든 경우의 합계를 구할 때는 CUBE 함수를 사용하면 된다. 일반적인 합계를 구할 때는 SUM 함수를 사용하지만, 합계와 소계를 동시에 구하기 위해서는 ROLLUP, CUBE, GROUPING SETS 함수를 사용할 수 있다. 합계와 소계를 구하는 3가지 함수는 조금씩 결과가 다르게 출력되니, 상황에 맞게 사용하면 된다. CUBE 함수 사용법 SELECT job , SUM(sal) FROM emp WHERE job IN ('ANALYST', 'MANAGER', 'SALESMAN') GROUP BY CUBE(job) 그룹 칼럼 job에 대한 합계가 조회된 결과에 출력된다. 그룹 칼럼이 한 개인 경우 ROLLUP 함수와 동일한 결과가 출력된다. 그러나 그룹 칼럼이 여러 개인 경우 다..
SQL Server에서 공백을 추가하기 위해서는 SPACE 함수와 REPLICATE 함수를 사용할 수 있다. SQL Server 2005 이상을 사용한다면 SPACE 함수를 사용해서 공백을 추가하는 것이 좋으며, REPLICATE 함수를 사용해서도 공백을 추가할 수 있다는 것도 알아두면 좋다. 함수를 사용하지 않고 공백을 직접적으로 문자열에 합칠 수도 있지만 공백의 길이가 긴 경우 공백이 몇 개인지 확인이 쉽지 않기 때문에 함수를 사용할 것을 추천한다. 목차 SPACE 함수로 공백 넣기 REPLICATE 함수로 공백 넣기 SPACE 함수로 공백 넣기 SELECT 'SQL' + SPACE(1) + 'Server' AS [공백1] , 'SQL' + SPACE(2) + 'Server' AS [공백2] , 'S..