난장 Dev/Database
오라클 - count에서 case 문 사용하기
카운트 하는 여러가지 방법. 전체건수에서 성별 구하는 것은 다른 방법으로도 가능하지만, COUNT로 표현하는 방법으로 작성했다. (예: SUM( DECODE( H_SEX, '1', 1, 0 ) ) 건수_남 ) 통계할 때 사용했었는데 DISTINCT안에 CASE 사용하는 것은 처음인 것 같아서... 1. COUNT 안에서 CASE 문 사용 가능: 전체 건수로 작성하고자 할때 2. COUNT 안에 DISTINCT + CASE 사용 가능: 중복제거 후 사용하고자 할때 SELECT COUNT(*) 전체건수 , COUNT( CASE WHEN H_SEX = '1' THEN H_ID END ) 건수_남 , COUNT( CASE WHEN H_SEX = '2' THEN H_ID END ) 건수_여 , COUNT( DIS..
오라클 - row 데이터를 컬럼 하나로 출력하기
이것도 생각보다 자주 사용하는 것 같다. 사용하다 보니 문자열 byte가 4000 기준으로 코드가 다르긴 한데, 난 그냥 4000바이트 이상 조회되는 것으로 대부분 처리한다. 1. 컬럼이 4000byte 이상인 경우 // 4000byte 이상 SELECT SUBSTR(XMLAGG (XMLELEMENT(X,',', LEVEL ) ORDER BY LEVEL).EXTRACT('//text()'),2) CONTENTS FROM DUAL CONNECT BY LEVEL
오라클 - 전화번호 표시(정리)를 위한 쿼리 - 정규식
전화번호의 경우 형식에 맞게 작성해주면 좋으련만, 상황에 따라서 조금 다르게 입력되는 경우가 있다. 처음 개발할 때부터 숫자만 입력하게 만들거나, 기타 다른 것을 입력 못하게 하거나, 혹은 띄어쓰기나 이런 것들을 다 개발해 넣기엔 시간이 없으려나. 간단하게 입력된 데이터를 보고 숫자만 불러와서 형식에 맞게 다시 표시하는 정규식이다. 휴대전화 번호나 집 전화번호 등이 000-0000-0000 등의 형식으로 보인다. SELECT REGEXP_REPLACE(REGEXP_REPLACE ('010-1111-1111', '[^[:digit:]]'), '(^02|050[[:digit:]]{1}|[[:digit:]]{3})([[:digit:]]{3,4})([[:digit:]]{4})', '\1-\2-\3') FROM ..
오라클 - 합집합, 교집합, 차집합
매번 UNION, UNION ALL만 사용하다 교집합, 차집합이 생각이 안나서,.. 이것도 특별히 자주 사용하는 것은 아닌데, 플래시백 하면 한 번씩 생각나더라. 기존 데이터랑 지금 데이터가 다른 거 찾아낼 때 유용했음. 한두 개야 그냥 하면 되는데 데이터가 많아질수록 편리하게 검사할 수 있음. https://blog.naver.com/langnei/220708702966 오라클 합집합/교집합/차집합 (UNION/UNION ALL/INTERSECT/MINUS) UNION : 합집합UNION은 두 테이블의 결합을 나타내며, 결합시키는 두 테이블의 중복되지 않은 값... blog.naver.com UNION : 합집합 - UNION은 두 테이블의 결합을 나타내며, 결합시키는 두 테이블의 중복되지 않은 값들을..
오라클 - 쉼표로 데이터 쪼개기 - 컬럼 데이터로 변경하기
개발자마다 조금 다르게 사용하고, 또 입력된 데이터를 상황에 맞춰 변경할 때가 있다. SQL쿼리도 그런 경우인데... 멀티 체크를 한 데이터를 하나씩 쪼개는 경우에 사용했다. 진짜 별거 아닌데... 찾으면 나오는 자료인데... 꼭 찾으려고 하면 안나와서 남긴다. 기억하면 될 걸... 그래도 매일 사용하는게 아니라서 그런지.. 자꾸 잊어버리게 된다. SELECT REGEXP_SUBSTR(VAL, '[^,]+', 1, LEVEL) VAL FROM (SELECT '1,2,3,4,5' VAL FROM DUAL) CONNECT BY REGEXP_SUBSTR(VAL, '[^,]+', 1, LEVEL ) IS NOT NULL ; 한줄에 표시된 '1,2,3,4,5' 를 1 2 3 4 5 와 같이 한줄로 표시된다.