반응형
그제던가.. 일을 하다가 부득의하게 디비 update를 하게됬는데
대상자를 찾던중 필요한 부분을 빼게됬다...  아이런.. 잘모르는데.. ㅜㅡ
인터넷을 미친듯이 뒤지다가 찾은 한녀석.. ㅋㅋ

translate 라는 함수이다.

translate 에대해서 설명하자면 값에서 특정문자들을 쏙쏙 빼준다. ㅋㅋ 이렇게 고마운녀석을 보았다 싶었다.

translate (데이터값, 체크대상문자열, 교환문자열);
이렇게 되어 있는데. 음.. 뭐랄까 이상하다.

두가지 예제를 올려야겠다. 왜나는 이상한 값이 나올까..
오히려 영문을 제외해버리고 숫자만 나온다 원래는 이게 아닌데...
ex1)
select translate('128A5B8C9D4','1234567890ABCD','1234567890') from DUAL 

결과값 -> 1285894 이렇게 나온다.
원래는 순차 적용으로 알고 있는데.. ㄷㄷ 

다음 예제를 보면.. 해깔린다.. 정말.
ex2) 
select translate('128D5B8C9D4','1234567890ABCDEFGHIJKL','ABCDEFGHIJKL') from DUAL

결과값 -> ABHELHID 

이렇게 나온다 예상으로라면 DBCD 이렇게 나와야되는데..

아무튼 숫자는 정확하게 체크를 할수 있다는게 포인트~
숫자만 뽑아 낼때는 상당히 유용하다는것이다.. 

암튼 조심히 써야될꺼 같다.. 아니면 내가 잘못 이해한것일지도.. ㄷㄷ


ps. 다른 분이 만들어 놓은 예제를 약간 손을 봤다.
http://neokido.tistory.com/356 여기서 가져왔다. 
select translate('1tech23', '123456', '45A') from dual;
-> 4tech5A
select translate('222tech', 'ech2', '3itA') from dual; 
->  AAAt3it

음.. 왜 나는 안될까.. 조금더 알아봐야될꺼 같다. 
반응형

'프로그래밍 > ORACLE' 카테고리의 다른 글

[ORACLE] decode  (0) 2011.07.22
[ORACLE] sign  (0) 2011.07.22
[Oracle] commit 후 데이터 복구  (2) 2011.03.29
ORACLE 소수점이하 삭제.  (0) 2010.07.07
ORCLE 자주 사용하는 명령어  (0) 2010.07.07
반응형
오늘 어떤분이 실수로 데이터를 날리셨다.. -0-ㅋ
이런.. 댄장.

그래서 복구 시켰다.. ㅋ
그런데 다른 곳에 오라클 복구시키는 것들 써놨는데.. ㅋㅋ
블로그에는 안올려놔서 올리려 한다.

쿼리는 아래와 같다.
/* 디비의 시간으로부터 15분전의 상태를 select하는 것이다. */
SELECT *
  FROM test_customer_tbl AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '15' MINUTE
                                         )
 WHERE 조건;

where 조건에 지운 조건을 넣어주면은 보여진다. ㅋㅋ

/* 디비의 시간으로부터 15분전의 상태를 insert하는 것이다. */
INSERT INTO TEST
   SELECT *
     FROM test_customer_tbl AS OF TIMESTAMP (  SYSTIMESTAMP
                                             - INTERVAL '15' MINUTE
                                            )
    WHERE 조건; 

where 조건에 지운 조건을 넣어주면 15분전의 상태의 값이 디비에 들어간다.

복구 시간은 정확히는 모르겠으나.. 60분 미만인것으로 알고 있다..
안전을 위해서는 30분정도로.. 생각을 하는것이 좋을것 같다..
 
반응형

'프로그래밍 > ORACLE' 카테고리의 다른 글

[ORACLE] decode  (0) 2011.07.22
[ORACLE] sign  (0) 2011.07.22
[ORACLE] translate(특정문자 제거)  (0) 2011.07.22
ORACLE 소수점이하 삭제.  (0) 2010.07.07
ORCLE 자주 사용하는 명령어  (0) 2010.07.07
반응형

TO_CHAR시 ROUND는 자동으로 처리되니 굳이 쓸 필요없고, '99990.000'처럼 하면 '9'때문에 유효숫자 앞자리에 space가 들어갑니다.

String 갯수는 테이블의 선언된 컬럼사이즈 감안해서 적당히 맞추면 되겠지요...?

'9'는 유효하지 않은 숫자는 space화 하는것이고, '0'은 유효하지 않은 숫자도 '0'을 찍어주는 포맷스트링입니다...'FM'은 변환 뒤 유효문자 앞뒤의 공백을 제거해 주는 포맷스트링입니다...참고하세요~~


이 두 문제는 아래의 포맷스트링을 쓰면 해결됩니다...아래 결과 테스트 해 보세요.


SELECT
  TO_CHAR(0.1234, 'FM999,990.000') AS a
, TO_CHAR(1.2345, 'FM999,990.000') AS b
, TO_CHAR(10.1234, 'FM999,990.000') AS c
, TO_CHAR(110.1234, 'FM999,990.000') AS d
, TO_CHAR(1234.0000, 'FM999,990.000') AS e
FROM dual

반응형

'프로그래밍 > ORACLE' 카테고리의 다른 글

[ORACLE] decode  (0) 2011.07.22
[ORACLE] sign  (0) 2011.07.22
[ORACLE] translate(특정문자 제거)  (0) 2011.07.22
[Oracle] commit 후 데이터 복구  (2) 2011.03.29
ORCLE 자주 사용하는 명령어  (0) 2010.07.07
반응형

-- 테이블 명 변경
ALTER TABLE schema.table_name RENAME TO new_table_name;

-- 테이블 로그 관련
ALTER TABLE schema.table_name LOGGING;
ALTER TABLE schema.table_name NOLOGGING;

-- 컬럼 추가
ALTER TABLE schema.table_name ADD (column_properties);

-- 컬럼 속성 변경
ALTER TABLE schema.table_name MODIFY (column_properties);

-- 컬럼 삭제
ALTER TABLE schema.table_name DROP COLUMN column_name;

-- 컬럼명 변경
ALTER TABLE schema.table_name RENAME COLUMN old_name TO new_name;

-- 제약 조건명 변경
ALTER TABLE schema.table_name RENAME CONSTRAINT old_name TO new_name;

-- 제약 조건 삭제
ALTER TABLE schema.table_name DROP CONSTRAINT constraint_name;

-- 테이블의 테이블스페이스 변경
ALTER TABLE schema.table_name MOVE TABLESPACE tablespace_name;

-- 테이블의 통계정보 업데이트
ANALYZE TABLE table_name COMPUTE STATISTICS;
ANALYZE TABLE table_name ESTIMATE STATISTICS SAMPLE 30 PERCENT;
ANALYZE TABLE table_name ESTIMATE STATISTICS SAMPLE 1000 ROWS;

-- 테이블의 통계 락 해제
EXECUTE DBMS_STATS.UNLOCK_SCHEMA_STATS('schema_name');

-- 스키마 소유의 오브젝트에 대한 통계 생성
EXECUTE DBMS_UTILITY.ANALYZE_SCHEMA('schema_name', 'COMPUTE');

-- PK 추가
CREATE UNIQUE INDEX schema.index_name ON schema.table_name (columns);
ALTER TABLE schema.table_name ADD CONSTRAINT constraint_name PRIMARY KEY (columns);

-- 인덱스명 변경
ALTER INDEX schema.old_index_name RENAME TO new_index_name;

-- 인덱스의 테이블스페이스 변경
ALTER INDEX schema.index_name REBUILD TABLESPACE tablespace_name;

-- 테이블스페이스의 데이터 파일 이동 및 이름변경
ALTER TABLESPACE tablespace_name OFFLINE NORMAL;
OS COPY: data file
ALTER TABLESPACE tablepsace_name RENAME DATAFILE 'diskb:data_file.dat' TO 'diska:data_file.dat';
ALTER TABLESPACE tablespace_name ONLINE;

-- SYNONYM 생성
CREATE SYNONYM schema.synonym_name FOR schema.object_name;
CREATE SYNONYM schema.synonym_name FOR schema.object_name@db_link_name;

-- COMMENT 생성
COMMENT ON TABLE schema.table_name IS 'comment_text';
COMMENT ON COLUMN schema.table_name.column_name IS 'comment_text';

-- DB LINK 생성
CREATE /* PUBLIC */ DATABASE LINK db_link_name
CONNECT TO user_id IDENTIFIED BY password USING 'tns_name';

-- SUBQUERY FACTORING

WITH
dept_costs

AS (
SELECT department_name, SUM(salary) dept_total
  FROM employees e, departments d
 WHERE e.department_id = d.department_id
 GROUP BY department_name

),
avg_cost

AS (
SELECT SUM(dept_total)/COUNT(*) avg
  FROM dept_costs

)
SELECT *

  FROM dept_costs
 WHERE dept_total > (SELECT avg FROM avg_cost)
 ORDER BY department_name;

반응형

'프로그래밍 > ORACLE' 카테고리의 다른 글

[ORACLE] decode  (0) 2011.07.22
[ORACLE] sign  (0) 2011.07.22
[ORACLE] translate(특정문자 제거)  (0) 2011.07.22
[Oracle] commit 후 데이터 복구  (2) 2011.03.29
ORACLE 소수점이하 삭제.  (0) 2010.07.07

+ Recent posts