본문 바로가기
728x90
반응형

database27

오라클 LPAD, RPAD 함수 : 공백 채우기 메뉴코드나, 자격증 코드를 구성할 때 코드명 || 시퀀스 형태로 붙여서 사용하는 방법도 있겠지만, 뒤로 길어지는 게 아닌, 자릿수는 지키면서 숫자만 올라가는 것을 원할 경우 LPAD. 또는 RPAD 함수를 사용할 수 있다. 개인적으로는 LPAD가 메뉴코드 / 자격증 코드를 구성하기에 적합한 것 같다. 사용법 SELECT LPAD([데이터], [총 자릿수], [채울 데이터]) FROM TABLE; SELECT RPAD([데이터], [총 자릿수], [채울 데이터]) FROM TABLE; LPAD , RPAD 는 시작점 위치가 왼쪽이냐 오른쪽이냐의 차이이다. 설명 SELECT LPAD([데이터], [총 자릿수], [채울 데이터]) FROM TABLE; 첫번째 데이터를 기준으로, 총 자릿 수 중 왼쪽으로 남은 .. 2023. 9. 15.
오라클 INSTR 함수 : 텍스트 인덱스 가져오기, (indexOf) 데이터를 가져올 때 쪼개서 가져오고 싶을 때가 있다. 그럴 때 사용할 수 있는 함수가 INSTR() 이다. 사용법 SELECT INSTR([데이터], [찾을 데이터], [찾기 시작할 위치], [찾을 데이터의 순번]) FROM TABLE; 1) 파라미터 2개 사용 시 SELECT INSTR('ORACLE TEST CODE', 'E') FROM DUAL; 텍스트 'ORACLE TEST CODE' 중, 'E'가 처음으로 위치한 순서를 가져온다. (result : 6) 앞에서부터 순서를 세고 인덱스 위치를 가져온다기보다는 순서를 가져오기 때문에, 리턴 숫자는 0, 1, 2..로 진행되는 게 아니라 1, 2, 3..으로 진행된다 2) 파라미터 3개 사용 시 SELECT INSTR('ORACLE TEST CODE'.. 2023. 9. 15.
오라클의 간단한 if 문 : DECODE 함수 오라클에서도 if 문처럼, true 와 false 로 다른 값을 보여주도록 할 수 있다. decode 문이 그렇다. SELECT DECODE(A, B, C, D, F, G) FROM TABLE; 위의 함수를 자바 소스처럼 풀어서 써보자면 의미가 아래와 같다. if (A == B) { return C; } else if (A == D) { return F; } else { return G; } 위의 소스처럼 순서대로 비교해서 결과값이 나오게 된다. 🐦 주의사항 🐦 1) DECODE 함수의 파라미터는 여러개를 사용할 수 있지만 최소 3개는 들어가야 한다. 파라미터를 2개 이하로 쓰면 아래와 같은 오류 발생함 ORA-00938: 함수의 인수가 충분하지 않습니다 00938. 00000 - "not enough .. 2023. 8. 4.
오라클 WITH AS 문 = 임시로 1회용 테이블 만들기 WITH AS 문은 뭔가 처음봤을 때는 오오 이게뭐야 🤩 ?! 했는데 막상 해보면 별 거 아닌 WITH AS 구문.. WITH AS 문은 임시 테이블 생성 구문 이라고 할 수 있다. 내가 가져오고 싶은 데이터들을 테이블처럼 가져올 수 있게 해준다. 나는 주로 JOIN 으로 묶기에 애매한 테이블이나, 아예 서로 관계가 없는 테이블의 데이터를 끌어와서 동시에 표현하고 싶을 때 사용한다. 이런 경우가 아니라면 JOIN 함 쿼리문 WITH TBL_TEAM AS ( SELECT '개발팀' AS 부서 , '사원' AS 직급 FROM DUAL ), TBL_TEAM_INFO AS ( SELECT '사원' AS 직급 , '2800' AS 연봉 FROM DUAL ) SELECT TT.부서 , TT.직급 , TTI.연봉 F.. 2023. 8. 4.
오라클 DATA TYPE 확인 : typeof() ? 오라클에도 data의 type을 확인할 수 있는 함수가 있을까? 없다. 쿼리 상에서 데이터 타입을 확인해서 뭔가 다른 처리를 하는 게 가능한 지 궁금했는데, 결과 데이터 형식을 고정하는 것에 만족해야 한다 ㅎㅅㅎ 만약 서브쿼리 등을 통해 다른 데이터를 가져오게 된다면 data type을 확인한다기보다는 애초에 가져 올 때 TO_NUMBER나 TO_CHAR 등으로 타입을 확정해서 가져오는 방식으로 쿼리를 짜야한다. 혹시나 있을까 열심히 구글링 했쥐만 없는 듯 특정 테이블 컬럼의 데이터 형식(VARCHAR2, NUMBER, ... ) 을 알 수 있는 DATA_TYPE() 함수만 나온다. DATA_TYPE() 함수는 이렇게 쓴다. SELECT DATA_TYPE FROM COLS WHERE TABLE_NAME .. 2023. 6. 27.
MERGE INTO 오류 - ORA-38101: INSERT VALUES 절에 부적합한 열이 있음 MERGE INTO 오류 - ORA-38101: INSERT VALUES 절에 부적합한 열이 있음 오류 발생 명령행: 71 열: 1 오류 보고 - SQL 오류: ORA-38101: INSERT VALUES 절에 부적합한 열이 있음: "SCOTT"."A"."MBR_SEQ" 왜 이 오류가 났는지 처음에는 전혀 감이 잡히지 않았다. 서브쿼리만 떼다가 실행해봐도 문제가 없고, 다른 테이블로 만들었지만 똑같은 구조의 쿼리는 잘만 병합되었기 때문에.. ▼ 요런 구조였는데 MERGE INTO TMP_MBR X USING ( SELECT MBR.MBR_ID , MBR.MBR_SEQ , MBR.AGE FROM TB_MBR_MBR MBR WHERE MBR.MBR_ID = 'test01' ) Z ON ( X.TMP_MBR_.. 2023. 6. 27.
오라클 요일 정보 가져오기 오라클 db에서 요일정보 가져오기 -> day, dy, d를 사용 SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD(D) hh24:mi:ss') FROM DUAL UNION SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD(DY) hh24:mi:ss') FROM DUAL UNION SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD(day) hh24:mi:ss') FROM DUAL ; d 입력시 -> 요일 숫자버전 출력 ( 일요일부터 1, 월요일 2, 화요일 3, 수요일 4, 목요일 5, 금요일 6, 토요일 7) dy 입력시 -> 요일 간단버전 출력 ( 일,월,화,수,목,금,토 ) day 입력시 -> 요일 상세버전 출력 ( 일요일,월요일,화요일,수요일,목요일,금요.. 2023. 5. 19.
시퀀스 생성과 시퀀스 초기화(수정) 방법 1. 시퀀스 순차적으로 유일한 번호값을 매겨주는 오라클의 객체 2. 생성 방법 일단 생성 쿼리.각 옵션에 대한 설명은 3번을 참조한다. CREATE SEQUENCE 시퀀스명 [START WITH n] [INCREMENT BY n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE | NOCACHE] [ORDER | NOORDER] 초간단하게 생성하기. 아무 옵션없이 생성 CREATE SEQUENCE TEST_SEQ; SELECT TEST_SEQ.NEXTVAL FROM DUAL; --1 시작 번호 지정해주기 CREATE SEQUENCE TEST_SEQ_2 START WITH 100; SELECT TEST_SEQ_2.NE.. 2023. 3. 20.
DB 변경 이력 조회하기. 프로시저 수정 이력 확인하기 DB 구조객체가 언제 마지막으로 수정됐는지 확인할 수 있는 테이블이 있다 USER_OBJECTS 이 테이블은 언제 DB 객체가 만들어졌고 수정되었는지(LAST_DDL_TIME) 등등을 보여준다. 1. 프로시저 수정 이력 확인하기 SELECT * FROM USER_OBJECTS WHERE OBJECT_TYPE IN ('PROCEDURE','FUNCTION') AND OBJECT_NAME = '프로시저명' ; 다만 수정된 이력을 전체적으로 보여주는 것은 아니고, 하나의 행에 LAST_DDL_TIME이 업데이트 된다. OBJECT_TYPE에 원하는 형태값을 넣으면 되는데, 조회 가능한 형태값은 아래와 같다. 따라서 예를들어 TABLE이 마지막으로 수정된 시각을 보고싶다면 OBJECT_TYPE에 "TABLE" .. 2022. 12. 26.
오라클 & 치환/끄기, 대체 변수 입력 창 오라클 쿼리에 & + 텍스트 조합이 들어갈 경우, &다음의 텍스트가 변수명으로 해석된다. SELECT '&test' FROM DUAL; 이 때, 대체변수 입력창에 치는 내용이 곧 ' ' 안의 내용이 된다. 위의 쿼리를 실행한 후 뜨는 대체변수 입력창에 '123'을 치게되면 아래와 같은 화면을 볼 수 있다. 만약 이러한 설정을 끄고 싶다면 SET DEFINE OFF; 이 명령어를 치면 된다. 하쥐만 . . . 사실 나는 &가 포함된 텍스트를 where 절에 넣어 검색하고 싶었다... 나와 같은 경우라면 INSERT INTO TABLE_TEST (URI, MNU_CD, MNU_NM, MNU_UP_CD) VALUES ('&' || 'testParam=123','101','테스트','100'); SELECT *.. 2022. 10. 21.
728x90
반응형