본문 바로가기

DB Query/자주쓰는 함수

(10)
CASE WHEN # CASE - SQL에서 조건절 예제는 아래와 같다. 구분열의 값이 2보다 크면 값2의 열의 값을, 구분열의 값이 2보다 작거나 같으면 값1 열의 값을 추출 SELECT CASE WHEN 구분>2 THEN 값2 ELSE 값1 END FROM 구분; - 예제1 SELECT C1, C2, CASE WHEN "C1" = '서울' THEN '100' ELSE '-100' END "C3" FROM TABLE_NAME; - 예제 2 SELECT C1, C2, CASE WHEN "C1" = '서울' THEN '100' ELSE '0' END "구분_서울", CASE WHEN "C1" = '인천' THEN '200' ELSE '0' END "구분_인천", CASE WHEN "C1" = '부산' THEN '300' E..
REPLACE (특정 문자를 치환하는 함수) # REPLACE - 특정 문자를 치환하는 함수이다. (특정 문자의 부부만을 치환) 예제는 아래와 같다. SELECT REPLACE(TARGET_TABLE,'SCHEMA.','') FROM SCHEMA.TABLE_NAME WHERE ID = '006'; - 예제 (구현 방법 설명) SELECT REPLACE(대상컬럼,변경대상값,변경값) FROM 테이블 명 WHERE 조건명 - 예제 UPDATE STATISTICS SET 에러테이블 = REPLACE(에러테이블,'SSS','') WHERE 기관 = '기관 이름'; - 끝 -
ROWNUM # ROWNUM - 각 행마다 넘버를 지정해 주고 싶을때 사용한다. 예시는 아래와 같다. SELECT * FROM SCHEMA.TABLE_NAME WHERE SITE_ID = 'TEST_01' AND HISTORY_ID LIKE 'TEST_01%' AND ROWNUM = '1' POSTGRE에서 구하기 SELECT * FROM ( SELECT (ROW_NUMBER() OVER()) AS ROWNUM, name, menu_id, read_yn, write_yn FROM schema.tablename) AS SS WHERE ROWNUM = '1'; POSTGRE는 좀 다르다. CTID 라는 별도의 컬럼을 제공하는데 값은 아래와 같이 나온다. CTID = ROWID 같은 개념이라고 보면 된다. - 예시는 아래..
SYSDATE (현재 일자와 현재 시간을 추출) # SYSDATE - 현재 일자와 현재 시간을 추출 SELECT TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS') "현재시간" FROM DUAL; SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') "현재시간" FROM DUAL; → 여기에서 'YYYY-MM-DD HH24:MI:SS' 의 순서를 바꿔주면 바뀐 순서대로 출력이 된다. POSTGRESQL SELECT NOW(); - 끝 -
LOWER (소문자로 변환 하여 조건 비교 및 출력) # LOWER 소문자로 변환하여 조건을 비교하거나 결과를 추출 LOWER(char1) SELECT LOWER(CODE) "소문자" FROM 코드; - 끝 -
UPPER (소문자를 대문자로 변환) # UPPER - 소문자를 대문자로 변환하여 출력하는 함수 - 예제 SELECT UPPER(CODE) "대문자" FROM 코드; - 예제 SELECT 사원번호, 직무, 급여 FROM 사원 WHERE UPPER(직무)='DBA'; - 끝 -
TRIM (좌우측 특정문자 제거) # TRIM TRIM 함수는 해당 열값에 대해 좌측과 우측에 존재하는 특정 문자를 제거하는 함수이다 TRIM(char1 FROM char2) 예제는 아래와 같다. SELECT TRIM('0' FROM '0012300') "TRIM" FROM 업무; 예제 SQL> SELECT 사원번호, 연봉, 보너스, 부서번호 FROM 급여 WHERE 사원번호 = '123'; SQL> SELECT 사원번호, 연봉, 보너스, 부서번호 FROM 급여 WHERE TRIM(사원번호) = '1231'; # RTRIM, LTRIM 오른쪽 또는 왼쪽의 특정 문자를 제거하기 위해 사용 RTRIM(char1,char2) or LTRIM(char1,char2) 예제 SELECT RTRIM('AA12300', '00') "RTIM" FROM..
SUBSTR (중간 값을 추출) # SUBSTR - 컬럼 열의 값에서 중간에 있는 문자를 추출해야할때 사용 SUSBSTR(char1,n,m) char1 : 함수를 수행하고자 하는 문자 값 또는 테이블의 열을 설정 n : 추출하고자 하는 문자열의 처음 위치 m : 추출하고자 하는 문자열의 길이 SELECT SUBSTR(CODE,2,3) "SUBSTRING" FROM 업무; - 특이사항 : SUBSTR이 사용된 열은 인덱스 사용이 불가능하다. - 예시는 아래와 같다. SELECT 거래일자, 카드별, 거래금액 FROM 거래내역 WHERE SUBSTR(거래일자,5,2) = '05'; - 끝 -