본문 바로가기

oracle23

[Oracle] between 사용 시 주의할 에러 회사에서 웹어플리케이션 개발을 하다가 발견하기 힘든 에러를 만나서 여기에 공유합니다. 문제 상황 : local에서 데이터 적용 마감을 현재 시간으로 업데이트하고, 현재 시간으로 적용중인 데이터 조회시 적용중인 데이터가 안나오는걸 확인하고 dev 환경에 업로드했는데, dev에서는 현재 적용중인 데이터가 있는 것으로 나옴 문제 원인 : between 사용 시 SYSDATE BETWEEN TIME1 AND TIME2 일 경우 TIME1과 TIME2 시간은 포함됩니다. dev 환경에서는 이 처리속도가 빨라서 적용 마감 데이터를 업데이트한 시간과 현재 적용중인 데이터를 가지고 올 때 TIME1이 일치하게 되었습니다. 그래서 데이터가 계속 존재하는 것으로 나왔습니다. 평소에 BETWEEN을 많이 사용하는 편인데, .. 2020. 3. 4.
[Oracle] Trim 1. 문자열 공백 제거 문자열의 공백을 제거하는데 많이 사용되는 Trim 예제는 다음과 같습니다. SELECT TRIM(' Sample '); 'Sample' SELECT LTRIM(' Sample '); 'Sample ' SELECT RTRIM (' Sample '); ' Sample' 2. 왼쪽 or 오른쪽 지정 문자 제거 º LTRIM : 컬럼에서 지정한 문자를 왼쪽에서 제거한 결과 º RTRIM : 컬럼에서 지정한 문자를 오른쪽에서 제거한 결과 º TRIM : 컬럼에서 지정한 문자를 양쪽에서 제거한 결과 SELECT LTRIM(' 테스트입니다') AS LTRIM_ONE ,LTRIM('테스트입니다','테스트') AS LTRIM_TWO ,LTRIM('테스트입니다','스트') AS LTRIM_THREE.. 2019. 11. 6.
[Oracle] 쿼리 실행 순서 1. SELECT 문법 실행 순서 SELECT - 1 FROM - 2 WHERE - 3 GROUP BY - 4 HAVING - 5 ORDER BY - 6 다음은 SELECT 문의 실행 순서입니다. FROM - 1 WHERE - 2 GROUP BY - 3 HAVING - 4 SELECT - 5 ORDER BY - 6 데이터를 찾기 위해 FROM 절에 접근하여야하고, 조건에 맞는 데이터만 가져오기 위해서 WHERE절 저븐, 원하는 데이터로 가공하는 GROUP BY, 가공한 데이터에서 조건에 맞는 것만 뽑아내는 SELECT, 그리고 ORDER BY를 통해 정렬을 합니다. REFERENCE https://police84.tistory.com/69 2019. 10. 31.
[Oracle] 정규표현식 함수 REGEXP 1. REGEXP_SUBSTR - SUBSTR 함수의 기능을 확장하였습니다. 주어진 문자열을 대상으로 정규 표현식 패턴을 수행하여, 일치하는 하위 문자열을 반환합니다. - 문법 : REGEXP_SUBSTR(srcstr, pattern, [,position[,occurrence[,match_option]]]) - srcstr : 소스 문자열 - position : Oracle이 문자열에서 특정 문자를 어디에서 찾아야 하는지 위치를 나타냄. 기본으로 1로 설정되어 있으므로, 문자열의 처음부터 검색을 시작. - occurrence : 검색하고자 하는 문자열에서 특정 문자의 발생 횟수. 기본으로 1로 설정되어 있으며, 이는 Oracle이 문자열에서 첫번째 발생 pattern을 찾는다는 의미. - match_op.. 2019. 10. 31.
[Oracle] FULL SCAN HINT 1. FULL HINT 실무를 뛰다보면 한테이블에 수백만에서 많개는 수천만의 데이터를 가진 테이블을 조회해서 데이터를 추출해야할 일들이 많이 있습니다. 이럴 경우 FULL과 HASH를 이용해서 데이터 추출을 많이 하였습니다. 하지만 왜 FULL을 써야하는지에 대해서는 잘 알지 못해서 이번 기회에 한번 정리를 하려고합니다. FULL SCAN은 CPU와 디스크의 사용률을 높이기 때문에 DBA들이 좋아하지 않습니다. 하지만 데이터량이 너무 많고, 적당한 인덱스가 없는 경우 FULL 과 HASH를 조합해서 데이터를 종종 추출하곤합니다. FULL SCAN 방식은 다중 블록단위 I/O를 수행합니다. ‘db_file_multiblock_read_count’ 파라미터에 설정된 값만큼 EXTENT의 블록들을 한번의 I/.. 2019. 9. 9.
[Oracle] TO_DATE 날짜 변환 쿼리를 짜다보면 종종 문자를 DATE형태로 바꿔야 할 경우가 많이 있습니다. 오늘은 문자를 날짜형태로 바꾸는 방법에 대해서 알아보겠습니다. 우선 시간의 종류에는 년, 일, 시, 분, 초가 있습니다. 1. TO_DATE 문자 타입 형식 종류 역할 YYYY,YYY,YY,Y 년도 표시 MM 숫자 월 표시 DD 31일 형태로 일 표시 HH24 24시 형태로 시 표시 MI 59분 형태로 분 표시 SS 59초 형태로 초 표시 2. 쿼리 예제 SELECT TO_DATE('20190909132450', 'YYYYMMDDHH24MISS'); 2019년 9월 9일 13시 24분 50초를 DATE형태로 바꿔 보았습니다. 쿼리의 결과를 DATE형으로 받거나 할때 사용하시면 됩니다. 위에 처럼 초까지 안쓰셔도 되고 필요한 만큼.. 2019. 9. 9.