본문 바로가기

728x90
반응형

DB

[Oracle] 오라클 문자를 Date 형식으로 TO_DATE ORACLE(오라클)에는 날짜를 표시하는 형이 DATE 형 입니다. 그런데, 문자열로도 날짜를 표시 합니다. 이때 해당 날짜에서 몇일을 뺀다 든지, 몇일을 더한다든지 또는 몇시간을 빼려면 어떻게 해야할까요. 가장 좋은 방법은 DATE 형으로 바꿔서 DATE 연산을 하는 것이 최선이겠지요 ^^ 그래서 사용하는 함수가 TO_DATE 입니다. 사용법은 TO_DATE(문자열,날짜패턴) 입니다. 여기서 문자열은 '20161010 11:11:11' 같은 문자로 된 년월일시분초 정보입니다. 날짜 패턴은 YYYY : 4자리 년도 MM : 2자리 월 DD : 2자리 일 HH24 : 24시간 단위 시간 MI : 분 SS : 초 등입니다. 좀 더 상세 한 내용은 https://docs.oracle.com/cd/B19306_.. 더보기
[Oracle] 그룹 함수 over, partition by 분석함수란? SELECT 분석함수 OVER([PARTITION BY 칼럼] [ORDER BY 칼럼] [WINDOWING 절]) FROM 테이블; 분석함수는 이미 사용해보셨을 겁니다. COUNT(), AVG(), SUM() 등과 같이 GROUP BY 절과 함께 사용했던 함수들도 있고, RANK(), ROW_NUMBER(), DENSE_RANK(), LEAD(), LAG(), NTITLE() 등 ORACLE 버전이 올라가면서 많이 생겨나고 있습니다. 이런 분석함수 뒤에 ANALYTIC CLAUSE( OVER 절)을 통해서 행 그룹의 정의를 지정하고 각 그룹당 결과값을 반복하여 출력하는 것 입니다. 여기서 행 그룹은 칼럼에 대한 행들이고 행 그룹의 범위(WINDOW)를 PARTITION BY, ORDER BY.. 더보기
[Oracle] 오라클 SYSDATE 사용법 오라클 SYSDATE 사용법 안녕하세요. 오늘은 오라클의 날짜 함수인 SYSDATE 사용법에 대해 알아보겠습니다. 쿼리작성시 우리는 날짜를 조회조건에 걸어서 사용하는 경우가 많습니다. 기간검색을 할 경우에나, 특정날짜를 추출하는 경우도 있습니다. 프로그램 소스상에서 날짜를 입력받아서 사용할 수도 있습니다. 하지만 오라클에서 SYSDATE라는 날짜 함수를 제공하여서 쉽게 사용할 수 있습니다. 이 SYSDATE를 사용하여서 원하는 날짜를 컨트롤 하는 방법을 알려드릴게요. 1. 오늘 날짜 구하기 select SYSDATE FROM DUAL; 을 사용하여 현재 날짜를 조회 할 수 있습니다. -- 오늘 날짜 구하는 방법 select SYSDATE FROM DUAL; 2. 원하는 날짜 포맷으로 데이터 가져오기 TO.. 더보기
[Oracle] 데이터가 있으면 UPDATE, 없으면 INSERT - MERGE 문 테이블에 원하는 데이터가 있으면 그 데이터를 UPDATE하고 없으면 INSERT하는 정말 유용하게 사용되는 문법 - MERGE 문 MERGE문 사용법 MERGE INTO 테이블명 USING 타겟 테이블 ON (타겟 데이터) WHEN MATCHED THEN UPDATE SET 컬럼1 = 값1, 컬럼2 = 값2, ... WHERE 조건 WHEN NOT MATCHED THEN INSERT (컬럼1, 컬럼2 ...) VALUES (값1, 값2...) WHERE 조건; MERGE문의 기본 사용법은 위와 같습니다. 다른 DML보다 문법이 복잡한편이라 처음 접하면 사용하기 힘들수도 있다 생각됩니다. 이에 아래 간단한 예제를 준비했습니다. MERGE문 예제 테스트 테이블 생성 CREATE TABLE TEST_TABLE.. 더보기
[Oracle] MERGE INTO 사용하기 테이블에 데이터가 이미 존재하면 업데이트 하고, 존재하지 않으면 입력을 해야 하는 경우가 종종 있습니다. 오라클에서 이런 작업을 한번에 할 수 있는 쿼리가 MERGE INTO 문 입니다. 현실적인 예는 아니지만 간단하게 성적 테이블을 생각해 보겠습니다. 과정코드과 학생코드가 주키이고, 성적 필드를 가지고 있습니다. CREATE TABLE TB_SCORE ( COURSE_ID VARCHAR2(10) NOT NULL, STUDENT_ID VARCHAR2(10) NOT NULL, SCORE NUMBER(5, 2) NULL, CONSTRAINT PK_SCORE PRIMARY KEY (COURSE_ID, STUDENT_ID) ); 1. 동일한 테이블 구조를 가지고 있는 TMP_SCORE 테이블로부터 데이터를 옮기.. 더보기
[Mysql] You can't specify target table '테이블명' for update in FROM clause You can't specify target table '테이블명' for update in FROM clause 에러가 발생할 경우 MariaDB에서 insert, update, delete에서 서브쿼리로 동일한 테이블의 조건을 사용시 발생하는 에러 오라클을 사용하던 사용자는 쿼리에 에러가 있는 것도 아닌데 왜 에러가 발생하는지 알방법이 없습니다. 1. 에러가 발생하는 쿼리 예 INSERT INTO board ( seq, name ) VALUES ( (SELECT MAX(seq) FROM board), name); 빨강색으로 표시된 부분을 보면 insert 하려는 테이블과 서브쿼리의 테이블이 동일한 것을 확인 할 수 있다. 2. 해결방법 서브쿼리 내부의 테이블에 별칭을 주면 됩니다. INSERT INT.. 더보기
[Mysql] 모든 공백 제거 하기 Mysql에서 가지고 오는 데이터에 공백이 들어가 있어서 방법을 찾다가 Java에서 처리 하는방법보다 Mysql에서 처리하는 방법으로 가기로 하였다. 일반 적으로 공백제거에는 TRIM() 을 많이 사용하는데 TRIM()을 사용하면 앞, 뒤 공백만 제거 모든 공백을 제거 하기 위해서는 REPLCAE()를 사용해야 한다. select replace(필드명,' ','') TRIM() 은 특정 위치에 문자나 공백을 제거하는데 더 효율적으로 사용 가능하다. TRIM - 문자열 좌우 공백 제거 코드 SELECT TRIM(' aabbccbbaa '); -- 또는 SELECT TRIM(BOTH FROM ' aabbccbbaa '); 결과 aabbccbbaa TRIM - 문자열 좌우 문자 제거 (BOTH) 코드 SELE.. 더보기

728x90
반응형