오라클에서 쿼리문을 작성하다 보면 서브 쿼리(subquery)를 자주 접하게 된다. 서브 쿼리를 처음 접하면 아주 복잡하게 느껴지는데, 기능을 조금만 익히면 쿼리문을 작성할 때 아주 유용하게 사용할 수 있다. 서브 쿼리는 메인 쿼리 내부에 작성하는 쿼리를 뜻하며, 주로 아래의 3가지 서브 쿼리로 분류한다. 서브 쿼리 사용 위치 설명 스칼라 서브 쿼리 SELECT 절 단일 칼럼, 단일 행을 반환 (1개의 값) 인라인 뷰 FROM 절 View와 사용적인 측면에서 동일함 (임시 뷰, 임시 테이블) 중첩 서브 쿼리 WHERE 절, HAVING 절 다중 칼럼 또는 다중 행을 반환 위의 3가지 분류 외에도 연관성 없는 서브 쿼리, 연관성 있는 서브 쿼리로 분류하기도 한다. 연관성 없는 서브 쿼리는 메인 쿼리의 테이..
자바스크립트에서 문자열을 특정 구분자로 분할하기 위해서는 split 함수를 사용하면 된다. split 함수를 사용하면 특정 구분자를 기준으로 문자열을 분리하여 결과를 배열로 반환한다. 구분자가 많지 않다면 substring 함수와 indexOf 함수를 활용하여 문자열을 특정 구분자로 자를 수도 있다. split 함수로 문자열 자르기 var str = 'HTML,CSS,JavaScript'; var words = str.split(','); // 결과 : ['HTML', 'CSS', 'JavaScript'] // words[0] : 'HTML' // words[1] : 'CSS' // words[2] : 'JavaScript' split("구분자 문자열") 위의 예제는 구분자 쉼표(',')를 기준으로 문자..
자바스크립트에서 문자열에서 문자 또는 문자열의 위치를 검색 위해서는 indexOf와 search 함수를 사용하고, 문자열의 뒤에서 부터 문자열을 검색할 때는 lastIndexOf 함수를 사용하면 된다. str.indexOf(searchValue[, fromIndex]) str.search(regexp) str.lastIndexOf(searchValue[, fromIndex]) 대부분 문자열을 찾을 때는 indexOf 함수를 많이 사용하며, 정규식을 사용해야 할 경우 search 함수를 사용하면 된다. 문자열을 찾으면 문자열의 첫 번째 위치를 반환하고 찾지 못하면 -1을 반환한다. indexOf 함수로 문자열 찾기 var str = 'HTML,CSS,JavaScript'; var pos1 = str.i..
우리나라는 1990년대 후반부터 아주 빠르게 인터넷이 보급되기 시작했다. 필자도 이때쯤 모뎀을 통해 접속하던 인터넷을 두루넷이라는 인터넷 전용회선으로 바꾸고 초고속 인터넷이라는 것을 경험한 것 같다. 인터넷으로 이용할 수 있는 서비스가 많지는 않았지만 그중 인기 있는 서비스는 온라인 커뮤니티 사이트였다. 아주 빠른 인터넷 보급과 더불어 온라인 커뮤니티 사이트의 인기 또한 급성장하기 시작했으며, 온라인 커뮤니티의 창업자들은 돈방 석위에 앉게 되었다. 그러나 창업자들의 성공은 오래가지 못하고 대부분 역사 속으로 사라지고 말았다. 아이러브스쿨 아이러브스쿨은 온라인 동창회 서비스로 우리나라 SNS를 논하면 절대 빠질 수 없는 서비스이다. 김영삼 창업자가 1999년 카이스트 박사과정 중 단돈 150만으로 설립해서..
오라클에서 테이블 목록을 조회할 때는 오라클에서 제공하는 3가지 시스템 뷰를 많이 사용한다. 3가지 시스템 뷰는 all_tables, all_tab_comments, all_objects이며 접근 권한에 따라서 접두어(all)를 바꿔서 사용할 수 있다. 테이블 목록 조회 방법 3가지 SELECT * FROM all_tables all_tables는 권한을 가진 모든 테이블이 조회되며 통계 정보를 쉽게 확인할 수 있다. SELECT * FROM all_tab_comments WHERE table_type = 'TABLE' all_tab_comments는 권한을 가진 모든 테이블 목록과 테이블 설명(COMMENT)을 조회할 때 사용한다. SELECT * FROM all_objects WHERE object_..
오라클에서 문자열의 특정 구분자를 기준으로 자르기 위해서는 SUBSTR, INSTR 함수를 사용한다. 그러나 오라클 10g부터 REGEXP_SUBSTR 정규식 함수를 사용하면 간편하게 문자열을 구분자로 자를 수 있다. 예제 1 - SUBSTR, INSTR 함수 사용 WITH tab AS ( SELECT '123,456' AS str FROM dual ) SELECT a.str , SUBSTR(a.str, 1, INSTR(a.str, ',') - 1) AS str1 , SUBSTR(a.str, INSTR(a.str, ',') + 1) AS str2 FROM tab a SUBSTR([문자열], [자를시작위치], INSTR([문자열], [구분자])) 문자열 '123,456'의 구분자 쉼표(',')를 기준으로 ..
2022년 1월 IT 세미나/컨퍼런스 일정 1월 6일(목) 네이버 클라우드 플랫폼과 함께 살펴보는 Cloud Trends 11:00~12:00 온라인 1월 17일(월) 2022년 1차 전자정부 표준프레임워크 온라인 정기교육 1월17일~23일 온라인 1월 19일(수) Oracle Developer Day 10:00~16:30 온라인 1월 19일(수) 메타버스, 블록체인. 그리고 P2E의 현황과 미래 '대한민국 NFT 포럼' 13:00~18:00 온라인 1월 20일(목) 사물 인터넷을 넘어 지능형 사물 인터넷시대로 12:30~13:30 온라인 1월 21일(금) .NET Conf 2022 x Seoul 10:00~17:00 온라인 1월 25일(화) 대한민국의 모든 스타트업 관계자들을 위한 고벤처포럼 1월 모임..
오라클 쿼리문을 보다 보면 이해하기 힘든 쿼리 형태를 발견하는 경우가 많다. SUM(1) 또한 처음 봤을때는 어떤 의미가 있는지 궁금한 적이 있다. SUM(1)은 잘못된 사용법은 아니며 상황에 따라서 한 두 번은 사용할 수도 있는 문법이다. 그러나 잘못된 사용은 쿼리문을 복잡하게 만들 수 있다. SUM(1)은 COUNT(*)와 동일하게 조회된 행의 건수를 집계할 때 사용한다. 그러나 조회된 데이터가 없을때 반환 값이 다르니 이점을 유의해야 하며 상황에 따라서 필요한 방식을 사용하면 된다. SELECT SUM(1) FROM emp SUM(1)과 COUNT(*) 모두 동일하게 조회된 데이터 건수를 반환한다. 단순히 데이터 건수를 집계할때는 COUNT(*)를 사용할 것을 권장한다. COUNT(*)를 사용하면 ..
오라클에서 그룹별로 순번을 부여하기 위해서는 OVER 절과 분석함수(DENSE_RANK, ROW_NUMBER)를 사용하면 된다. 그룹별 단일 순번을 부여하기 위해서는 DENSE_RANK 함수를 사용하고, 연속된 순번을 부여하기 위해서는 ROW_NUMBER 함수를 사용하면 된다. 예제 1 - 그룹별 단일 순번 SELECT job , empno , ename , sal , DENSE_RANK() OVER(ORDER BY job) AS rnk FROM emp ORDER BY job DENSE_RANK() OVER(ORDER BY [그룹칼럼1, 그룹칼럼2, 그룹칼럼3 ...]) DENSE_RANK 함수와 OVER 절을 사용하여 직군별(job) 단일 순번을 부여하였다. 순번을 매길 칼럼(그룹)을 OVER 절 내부..
SQL Server에서 열(칼럼)을 행으로 바꾸기 위해서는 UNPIVOT을 사용하면 된다. 가로의 칼럼을 세로의 행으로 바꾼다고 생각하면 된다. 자주 사용하지는 않지만 개념을 이해하고 있으면 한 번쯤은 필요할 때가 있다. SELECT * FROM ( 대상테이블 or 서브쿼리 ) AS tab UNPIVOT ( 집계값칼럼명 FOR UNPIVOT대상칼럼명 IN ([UNPIVOT할칼럼명] ... ) AS unpvt UNPIVOT 사용법 WITH sal_stat(job, D_10, D_20, D_30) AS ( SELECT 'ANALYST', 0, 6000, 0 UNION ALL SELECT 'CLERK', 1300, 1900, 950 UNION ALL SELECT 'MANAGER', 2450, 2975, 285..