반응형
오늘 회사왔는데 이런.. 데이터를 뽑아달라고 요청을 했다.
그런데 연락처를 000000000000 이런식으로 12자리로 달란다.. ㅜㅜ

엑셀로 해야되나 어떻게 해야되나 찾다가 ㅋ 고맙게도 오라클에 함수가 있어서
나름 열심히 응용을해서 리스트를 건냈다..

바로 LPAD와 INSTR, SUBSTR을 사용을 해서 출력을 했다.
참고마운 함수인거 같다.. ㅋㅋ

LPAD함수는 (data,data의 총길이,체워넣을값) 이렇게 사용을 한다.
위와같은 식으로 사용을 하면 총길이에 모자른 만큼 체워넣을값으로 데이터의 왼쪽에 표시를 한다.

그리고 INSTR함수는 (data,구분자,시작점,끝점) 이런식으로 사용을한다.
INSTR함수는 리턴되는 값이 데이터의 길이값이다.

예제는 아래와 같다.

SELECT LPAD (SUBSTR ('http://www.soulroad.net',
                     0,
                     INSTR ('http://www.soulroad.net', '.', 1, 1) - 1
                    ),
             21,
             '0'
            ) AS "결과"
  FROM DUAL;

결과> 00000000000http://www

2)
SELECT LPAD (SUBSTR ('http://www.soulroad.net',
                     0,
                     INSTR ('http://www.soulroad.net', '.', 1, 2) - 1
                    ),
             21,
             '0'
            ) AS "결과"
  FROM DUAL;

결과> 00http://www.soulroad

3)
SELECT LPAD (SUBSTR ('http://www.soulroad.net',
                     INSTR ('http://www.soulroad.net', '.', 1, 1) + 1,
                     INSTR ('http://www.soulroad.net', '.', 1, 2) - 1
                    ),
             21,
             '0'
            ) AS "결과"
  FROM DUAL;
  
결과> 000000000soulroad.net


ㅋㅋ 잊지말자. 홧팅~ 
반응형

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

[ORACLE] auto-increment 생성하기.  (0) 2013.12.20
[ORACLE] SESSION KILL  (0) 2013.12.20
[ORACLE] decode  (0) 2011.07.22
[ORACLE] sign  (0) 2011.07.22
[ORACLE] translate(특정문자 제거)  (0) 2011.07.22
반응형
이번 함수는 비교연산자라 하면 편할것 같다.

사용방법은 간단하다.

select decode(데이터 값, 비교 값, 참일경우 도출값, 거짓일경우 도출값) from dual; 

ex)
select decode(-1,1,3,4) from dual; 
-> 4 
select decode(1,1,3,4) from dual; 
-> 3

이나온다.
참 간단하고 사용하기가 편하나.

case 문과 비슷하나 사용방법이 편리한거 같은데
depth가 길어지면 성능이 저하된다고 한다고 한다.


select decode(데이터 값
, 비교 값1, 참일경우 도출값1, 비교 값2, 참일경우 도출값2, 비교 값3, 참일경우 도출값3, 거짓일경우 도출값) from dual; 

ex)
select decode(-1,1,7,2,8,3,9,0) from dual; 
-> 0 
select decode(2,1,7,2,8,3,9,0) from dual
-> 8

이렇게 되는 식이다.
잊지말자.. 


 
반응형

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

[ORACLE] SESSION KILL  (0) 2013.12.20
[ORACLE] LPAD and INSTR  (0) 2011.08.09
[ORACLE] sign  (0) 2011.07.22
[ORACLE] translate(특정문자 제거)  (0) 2011.07.22
[Oracle] commit 후 데이터 복구  (2) 2011.03.29
반응형
음.. 이번주는 정말 힘든 하루인거 같다..
잘모르는 sql은 정말... ㅠㅡ
허나 남의 주머니에서 돈을 꺼내는것이 쉽지만은 않다.(월급)

sign() 이라는 함수를 쓰게 되어서 이렇게 올린다.
사용방법은 간단하다.

sign(number type);
ex)
sign(1) 
or  sign(0.5) or  sign(0) or sign(-1)

1 , 1, 0, -1

이러한 값을 도출해낸다.

양수일경우 1이 표기되고 음수일경우 -1 0일경우는 0이다.
오옷.. 이러한 좋은것이...
간단하고도 설명도 편하고 딱 떨어지고 참 좋다. 
반응형

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

[ORACLE] LPAD and INSTR  (0) 2011.08.09
[ORACLE] decode  (0) 2011.07.22
[ORACLE] translate(특정문자 제거)  (0) 2011.07.22
[Oracle] commit 후 데이터 복구  (2) 2011.03.29
ORACLE 소수점이하 삭제.  (0) 2010.07.07
반응형
그제던가.. 일을 하다가 부득의하게 디비 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