TO_CHAR를 사용하여 숫자를 문자로 변환하면 소수점 이상이 0일 경우 점(.)으로만 표시되어 변환이 된다. 아래와 같은 포맷(FORMAT) 옵션을 활용하여 변환된 수치 값의 형태를 결정할 수 있다.


SELECT TO_CHAR(0.40, 'FM9990.99')          STR

        , RTRIM(TO_CHAR(4, 'FM9990.99'),'.')  STR2 --정수일경우 소수점표시 안함 (RTRIM)

  FROM DUAL

;

--STR : 0.4       

--STR2 : 4


FM9990.99의 의미

9는 해당 자리의 숫자를 의미하고 값이 없을 경우 소수점 이상은 공백으로 소수점 이하는 0으로 표시한다.

0은 해당 자리의 숫자를 의미하고 값이 없을 경우 0으로 표시하며 숫자의 길이를 고정적으로 표시 할 때 주로 사용한다.

FM은 좌우 9로 치환된 소수점 이상의 공백 및 소수점 이하의 0을 제거 한다.



[추가설명]

FM을 넣지 않을 경우 숫자소수점 이상은 공백으로 소수점 이하는 0이로 표시된다.



9는 가변적인 값이어서 0이거나 숫자가 존재하지 않을 시 값을 버린다.



0은 해당 값의 길이가 고정적으로 변환이 된다. 변환된 숫자의 길이를 일정하게 맞추고 싶으면 길이만큼 0으로 채우면 된다.



변환될 숫자의 길이보다 포맷의 길이가 작으면 오류가 발생한다.

포맷을 지정 시 변환될 숫자의 길이보다 최대 개수만큼 9 또는 0을 채워야 한다.


출처: http://gent.tistory.com/49

1) 특정 문자열+숫자

="NO00"&ROW()

함수를 1번 셀에 놔두면 해당항목이


NO001 로 바뀐다. 해당 1번 행 셀을 Ctrl + C 한 후,

다른 열 (ALL- 최상단탭) 클릭Ctrl + V 하면


NO001 ~ NO01.....0001 까지 생성된다.



2) 특정 숫자

1번 행 셀에 1을 기입 후 2번 행셀에서

내용에 = 입력후 화살표 위 (1번행셀 가리킴) 누르고 +1 기입 후, 엔터 누르면 

2번 행 셀에 2가 출력된다.


2번 행 셀을 Ctrl + C 한 다음, 3번 행 셀에 마우스 왼쪽 클릭,

그다음 Ctrl + Shift + 화살표 아래 (해당 열 모두 선택) 한 다음, 엔터 누르면

모든 행에 숫자가 +1 되어 출력된다.

엑셀 데이터를 컬럼에 매칭되게 하나씩 넣어 저장한다.


big_data.xls

이재희      178    80    NO0001

윤김         155    60    NO0002

이재희      175    75    NO0003




다른이름으로 저장 CSV (쉼표로 분리)


big_data.csv

이재희, 178, 80, NO0001

윤김, 155, 60, NO0002

성새힘, 175, 75, NO0003




메모장에 아래와 같이 작성 후, 확장자를 .ctl로 저장합니다.


load data

infile 'E:\01. PROJECT\02. G6\06. 개발\13. 테스트\COKR_APPLY.csv'

append

into table table_apply

fields terminated by ','

(seq, model_category, event_seq, user_id)


위작성 파일 이름 : apply.ctl



E:\> sqlldr userid=scott/tiger@localhost control='C:\ctl_folder\test_apply.ctl'



userid= 계정명/계정비밀번호 @ 접속할 도메인명

ex) admin/admin01@TEST.DOMAIN.NET


주의: 

sql*plus 에서 명령어 치면 안됨. os명령창으로 나와서 써야됨





유닉스 환경이라면


SQL> !sqlldr userid ... ...... 하면 됨






참고 URL : http://yadw.tistory.com/123

Toad for Oracle , SQL Developer for Oracle



해당 DBMS 모두 Procedure/Method 을 호출하기 위해서는 

IN parameter와 OUT parameter, INOUT paramter가 변수와 Bind 되어야 excute (실행)이 된다.



execute mgr.memberproc_delete('34622',:resultInt,:resultCode);


허나, 토드에서는 


call mgr.memberproc_delete('34622',:resultInt,:resultCode);


call문도 실행이 된다. 

하지만 SQL Developer에서는 call이 실행되지 않고 excute 로만 실행이된다.




상황:
CallableStatement에서 사용하는 프로시져가 없는 경우, 오타 등으로 못찾는 경우

해결:
1. 'PROC_INPUT_DATA' Procedure를 만들어준다.
2. 컴파일이 안된경우 생긴다.



Tip 

Toad for Oracle : F9  프로시저 컴파일 단축키

Toad for Oracle : F5  프로시저 저장


증상:

sequence 생성 이후 seq_name.nextval로 생성되는 숫자가 1, 2, 3 으로 순차적으로 증가하는 것이 아니라 10, 20씩 늘어나는 경우가 있다.


이유:


sequence에 cache 옵션이 선택되었기 때문이다. cache 옵션을 사용하면 속도를 증가시키기 위해 sequence 번호를 한 번에 여러 개씩 메모리에 올려놓고 작업을 한다. 이것을 사용하면 매번 sequence 번호를 생성하는 것보다 빠르기 때문이다. 이러한 경우에 DB를 중지시키거나 전원이 off 되는 경우에 메모리에 있던 번호가 삭제되기 때문에 이러한 증상이 발생된다. 즉 cache 옵션이 20개씩 시퀀스 번호를 생성하도록 설정되어 있다면 한번에 1부터 20까지 시퀀스 번호를 생성한다. 이 상태에서 DB를 중지하고 재시작 시키면 메모리에 있던 20번까지의 시퀀스가 삭제되고 21번부터 40번까지 메모리에 시퀀스 번호가 저장되기 때문에 이런 경우에 1, 21, 41로 시퀀스 번호가 증가될 수 있다.


참고:


* 모든 sequence 정보 확인 쿼리:


select sequence_name, min_value, max_value, increment_by, last_number


from user_sequences;


/


* cache size 확인 쿼리:


select sequence_name, cache_size


from user_sequences


where sequence_name = 'seq1'


/


* cache 옵션을 사용하지 않도록 설정을 변경하는 쿼리


alter sequence seq1 nocache


/


출처: OTN, Google

Tablespace


 - DBMS에 저장되는 자료가 있는 물리적인 파일.


 - 각 개체마다 테이블스페이스를 지정해 줄 수 있고, 사용자에게 기본으로 사용할 테이블스페이스를 지정할 수 있다.


 - 오라클에서는 기본적으로 /usr/local/oracle/oradata/[SID]/ 디렉토리에 기본 테이블스페이스를 생성하며,


    Oracle Express Edition에서는 /usr/lib/oracl/xe/oradata/XE/ 디렉토리에 기본 테이블스페이스를 저장한다.





테이블스페이스 생성


 테이블스페이스를 생성할 경우 여러 옵션이 사용될 수 있으나 테이블스페이스의 기본 용량을 자동으로 늘려주는


 옵션(autoextend) 등은 기본으로 사용하는 것이 편하다.


create tablespace 테이블스페이스명 (예: ts_jihyung)
 
datafile '테이블스페이스 파일 저장 경로 (예: D:/db/테이블스페이스명.dbf)'
 
size 파일 용량 (예: 50M)
 
autoextend on
 
extent management local autoallocate;





Temp 테이블스페이스 생성


Temp 테이블스페이스의 최소 용량은 1 MByte 이상이다. 그러므로 처음 생성시 2 MByte로 생성 한 뒤 자동증가 옵션을 사용한다


create temporary tablespace 테이블스페이스명 (예: ts_temp_jihyung)
 
tempfile 'Temp 테이블 스페이스 파일 저장 경로 (예: D:/db/Temp테이블스페이스명.dbf)'
 
size 파일 용량 (예: 2M)
 
autoextend on
 
extent management local;




테이블스페이스 삭제


 특별한 경우가 아니라면 테이블스페이스의 모든 내용을 자동으로 지우고 파일까지 깔끔하게 삭제할 수 있다.


 이 옵션이 바로 "including contents AND datafiles"이다.


drop tablespace 테이블스페이스명
 
including contents and datafiles
 
cascade constraints;





-- 테이블 스페이스 관련


계정생성시에 tablespace를 지정해주지않으면 ( Default tablespace를 지정하지 않으면 ) 

Database의 Default Tablespace로 Object가 저장이되고 ,


Database의 Default Tablespace가 지정되지 않았다면 System Tablespace로 저장이 됩니다.


현재 유저의 Default Tablespace 확인은 user_users의 테이블을 조회




유저의 Default Tablespace 지정

SQL> Alter User 유저명 default tablespace 테이블스페이스명;

 

유저 Default Tablespace 변경

SQL> Alter User 유저명 default tablespace 테이블스페이스명;

 

테이블의 Tablespace 변경

SQL> Alter table 테이블명 Move Tablespace 테이블스페이스명;




* 테이블이 차지하는 빈공간 제거 쿼리

ALTER TABLE 테이블명  SHRINK SPACE ;

ALTER TABLE 테이블명  DEALLOCATE UNUSED ;

iBATIS에서 질의를 만들다 보면 다음과 같은 오류가 난다.




ORA-00911: 문자가 부적합합니다


ORA-00911: invalid Character





실제 내용이된 SQL이 잘못된 것이 아니라면 제일 마지막에 세미콜론(“;”)을 붙이지 않았나 의심해 보자.

SELECT deptno

     , SUBSTR(XMLAgg(XMLELEMENT(x, ',', empno) ORDER BY empno).Extract('//text()'), 2) "9i"

     , WM_CONCAT(empno) "10g"

     , LISTAGG(empno, ',') WITHIN GROUP(ORDER BY empno) "11g"

  FROM emp

 GROUP BY deptno

 ORDER BY deptno

 


오라클 10g 에서 사용하는 wn_concat 함수는 정렬이 안된다

오라클 Character set 에 따라 한글 저장의 Byte 수가 다르다.



EUC-KR : 한글 1자 : 2 Byte

UTF-8 : 한글 1자 : 3 Byte




+ Recent posts