[Oracle] SUBSTR 문자열 자르기



Oracle에서 SUBSTR 함수는 문자열을 자를 때 사용하는 기본 함수이다.


SUBSTR 함수(문자 단위)


사용방법


1. SELECT SUBSTR( COLUMN1, "시작위치" ) FROM Table_Name;


Ex)  




2. SELECT SUBSTR( COLUMN1, "시작위치", "길이" ) FROM Table_Name;


앞에서 부터 자르고자 하는 경우


Ex) 




뒤에서 부터 자르고자 하는 경우


Ex) 






이런 방식으로 문자열 자르기를 할 수 있다.




'IT Info > Oracle' 카테고리의 다른 글

[Oracle] LISTAGG 여러 행을 하나의 컬럼으로 합치기  (0) 2019.12.11
[Oracle] Replace 함수 사용법  (0) 2019.12.11
[Oracle] 리스너(Listener)  (0) 2019.12.05
[Oracle] CASE WHEN THEN  (0) 2019.12.05
[Oracle] Decode  (0) 2019.12.02

[Oracle] LISTAGG 여러 행을 하나의 컬럼으로 합치기


11g 에서 추가된 함수로 여러 행을 한 행에 구분자로 합쳐서 보여주고자 할 때, 사용한다.


형식


SELECT LISTAGG(COLUMN1, '구분자') WITHIN GROUP (ORDER BY COLUMN1)

FROM Table_Name;



예제


SELECT CODE

FROM CODETABLE;


결과값




LISTAGG를 이용하여 한 컬럼으로 합치기


SELECT LISTAGG(CODE, ',') WITHIN GROUP (ORDER BY CODE) AS LISTAGGCODE

FROM CODETABLE;


결과값



이렇게 하나의 컬럼에 구분자를 넣어서 표현이 가능하다.


데이터 추출 요청을 받다보면 생각보다 자주 쓰이는 함수로 알아두면 좋다.









'IT Info > Oracle' 카테고리의 다른 글

[Oracle] SUBSTR 문자열 자르기  (0) 2019.12.18
[Oracle] Replace 함수 사용법  (0) 2019.12.11
[Oracle] 리스너(Listener)  (0) 2019.12.05
[Oracle] CASE WHEN THEN  (0) 2019.12.05
[Oracle] Decode  (0) 2019.12.02

[Oracle] Replace 함수 사용법


특정 문자열을 치환하고자 하는 경우 Replace() 함수를 사용한다.


데이터 마이그레이션 하는 경우, 유용하게 쓰는 경우가 많이 있어서 사용법을 익혀둔다면, edit이나 rowid 기능을 통해 하나하나 삭제 시키는 것보다 한번에 할 수 있어 기분 좋을 것이다.



형식


SELECT COLUMN1, REPLACE(COLUMN2, 'FINDWORD', 'CHANGEWORD') AS WORD

FROM Table_Name;



COLUMN2의 값에서 FINDWORD를 찾아서 CHANGEWORD로 변경한다.




예제 1. 전화번호 - 제거


SELECT NAME, REPLACE(PHONENUMBER, '-', '') AS PHONENUMBER

WHERE USERINFO;


원래 값


PHONENUMBER original value = 010-0000-0000


결과 값


01000000000







'IT Info > Oracle' 카테고리의 다른 글

[Oracle] SUBSTR 문자열 자르기  (0) 2019.12.18
[Oracle] LISTAGG 여러 행을 하나의 컬럼으로 합치기  (0) 2019.12.11
[Oracle] 리스너(Listener)  (0) 2019.12.05
[Oracle] CASE WHEN THEN  (0) 2019.12.05
[Oracle] Decode  (0) 2019.12.02

[Oracle] 리스너(Listener)


오라클 리스터는 네트워크를 이용하여 클라이언트에서 오라클 서버로 연결하기 위한 네트워크 관리자로
네트워크를 통한 연결은 모두 리스너가 담당하고, 리스너와 연결되기 위해서는 클라이언트에 오라클 NET8(오라클 클라이언트)이 설치되어 있고 이를 통해 오라클 서비스명이라는 것을 만들어 접속을 해야 한다.

lsnrctl 명령어로 리스너를 관리 할 수 있다.

예를 들어 JDBC connection이 아래와 같이 나는 경우가 발생한다.



1. Oracle 리스너 확인

명령어 : lsnrctl status


리스너가 없다는 것을 확인하면

2. 리스너 시작

명령어 : lsnrctl start or lsnrctl reload


그러면 정상적으로 Oracle 리스너가 시작 된 것을 확인 할 수 있다.


이제 다시 JDBC Connection을 시도하면 정상적으로 동작함을 확인 할 수 있다.










'IT Info > Oracle' 카테고리의 다른 글

[Oracle] LISTAGG 여러 행을 하나의 컬럼으로 합치기  (0) 2019.12.11
[Oracle] Replace 함수 사용법  (0) 2019.12.11
[Oracle] CASE WHEN THEN  (0) 2019.12.05
[Oracle] Decode  (0) 2019.12.02
[Oracle] Trigger  (0) 2019.12.02

[Oracle] CASE WHEN THEN


SELECT 로 가져오는 값에 대해서 조건을 걸어 값을 변환할 필요가 있는 경우 사용.


형식은 아래와 같다.


SELECT CASE

WHEN COLUMN1 > 90 THEN 'A'

WHEN COLUMN1 BETWEEN 80 AND 90 THEN 'B'

WHEN COLUMN1 BETWEEN 70 AND 80 THEN 'C'

ELSE 'D'

END SCORE

FROM ALLSCORE;


반드시 마지막에 END를 반드시 넣어줘야 한다.


IF ~ ELSE 와 같다고 생각하면 된다.


그럼 과거에 설명했던 DECODE를 CASE WHEN THEN으로 변경해보자.




SELECT NAME,

CASE SCORE

WHEN THEN 'E'

WHEN 2 THEN 'D'

WHEN 3 THEN 'C'

WHEN 4 THEN 'B'

WHEN 5 THEN 'A'

ELSE 'E'

END

FROM EXAMSCORE;


이렇게 점수별로 등급을 준다면 동일하겠다.




'IT Info > Oracle' 카테고리의 다른 글

[Oracle] Replace 함수 사용법  (0) 2019.12.11
[Oracle] 리스너(Listener)  (0) 2019.12.05
[Oracle] Decode  (0) 2019.12.02
[Oracle] Trigger  (0) 2019.12.02
[Oracle] 데이터 중복 제거 distinct, group by  (0) 2019.11.26

[Oracle] Decode


쉽게 말해 if else 구문을 select 절에서 사용할 수 있는 함수


SELECT DECODE(Column1, Value1, Result1, Value2, Result2, Result3) AS Result

FROM Table_Name;


Table의 Column1이 Value1과 같으면 Result1, Value2와 같으면 Result2, Value1, Value2 와 같지 않으면 Result3를 표시


Ex)

SELECT NAME, DECODE(SCORE, '1', 'E', '2', 'D', '3', 'C', '4', 'B', '5', 'A') AS SCORE

FROM EXAMSCORE; 



'IT Info > Oracle' 카테고리의 다른 글

[Oracle] 리스너(Listener)  (0) 2019.12.05
[Oracle] CASE WHEN THEN  (0) 2019.12.05
[Oracle] Trigger  (0) 2019.12.02
[Oracle] 데이터 중복 제거 distinct, group by  (0) 2019.11.26
[Oracle] MERGE INTO  (0) 2019.11.20

[Oracle] Trigger


테이블에 어떤 이벤트가 발생 시, 기록을 남길 수 있는 명령어.


commit, rollback을 수행할 수 없다.


CREATE OR REPLACE TRIGGER Trigger_Name 


timming[ BEFORE | AFTER ] event [ INSERT | UPDATE | DELETE ]


ON Table_Name


Begin

실행명령;

End;





'IT Info > Oracle' 카테고리의 다른 글

[Oracle] CASE WHEN THEN  (0) 2019.12.05
[Oracle] Decode  (0) 2019.12.02
[Oracle] 데이터 중복 제거 distinct, group by  (0) 2019.11.26
[Oracle] MERGE INTO  (0) 2019.11.20
[Oracle] INSERT, UPDATE, DELETE  (0) 2019.11.20


[Oracle] 데이터 중복 제거 distinct, group by


데이터 중복에 대해서 제거하는 방법으로 2가지가 존재한다.



DISTINCT


SELECT DISTINCT COLUMN1, COLUMN2

FROM TABLE_NAME


장점 : 사용법이 간편함

단점 : TEMP TABLESPACE에 임시로 저장하고 작업하는 방식으로 시스템에 부하를 줄 수 있음



GROUP BY 


SELECT A.COLUMN1, A.COLUMN2

FROM TABLE_NAME A

GROUP BY A.COLUMN1, A.COLUMN2


장점 : DISTINCT에 비해 속도가 빠르고 시스템 부하를 덜 줌

단점 : 사용법이 조금 복잡함.



중복 데이터가 어떤 것이지 찾고자 하는 경우


SELECT COUNT(*), A.COLUMN1

WHERE TABLE_NAME A

GROUP BY A.COLUMN1

HAVING COUNT(*) > 1




'IT Info > Oracle' 카테고리의 다른 글

[Oracle] Decode  (0) 2019.12.02
[Oracle] Trigger  (0) 2019.12.02
[Oracle] MERGE INTO  (0) 2019.11.20
[Oracle] INSERT, UPDATE, DELETE  (0) 2019.11.20
[Oracle] View Table  (0) 2019.11.16

+ Recent posts