본문 바로가기

반응형

프로그램/ORACLE

(23)
커밋 후 복원하는 방법 FLASHBACK 오라클에서 커밋(COMMIT)한 후에 데이터를 복원하는 방법으로 FLASHBACK이란 방법이 있습니다. insert,update,delete를 하고 나서 커밋을 하면 롤백을 통해서는 데이터가 복원이 안됩니다. 하지만 FLASHBACK이란 방법을 쓰면 특정 시점의 데이터로 복원이 가능합니다. * 특정시점의 테이블에 있는 데이터를 조회하는 쿼리 select * from 테이블명 as of timestamp ('원하는 날짜 시간','YYYY-MM-DD HH24:MI:SS' ) where 테이블컬럼 = '' ; * 특정시점의 테이블에 있는 데이터를 복원하는 쿼리 FLASHBACK TABLE 테이블명 to timestamp ('원하는 날짜 시간','YYYY-MM-DD HH24:MI:SS' ) where 테이블컬럼..
오라클 = 검색 결과가 안나오는 경우 *오라클 equal 조회시 프로그램에서는 = 검색시 결과가 안나오고 toad 같은 sql 툴에서는 결과가 나오는 경우에는 컬럼 형식이 char인지 확인해봐야한다. char는 varchar2와 달라서 컬럼크기가 13이고 데이터 크기가 10이면 나머지 3자리에 공백을 채운다. 그래서 쿼리문에 컬럼에 trim을 쓰던지 rpad를 사용해서 공백을 없어던지 조회할 값에 공백을 채워서 조회를 하면된다. 그런데 종종 where 절 컬럼에 trim을 쓰면 쿼리가 늦어지는 경우가 있습니다. 사용할 쿼리를 미리 테스트한 후에 빠른쪽으로 맞춰서 사용하세요. 예) where trim(컬럼명) = 'test' 이럴땐 rpad를 쓰면 된다. rpad('비교할값이나 컬럼명',컬럼자리수, 대처할값) 예) where 컬럼명 = rpa..
컬럼의 한글, 영문, 숫자에 대한 정렬 방법 컬럼의 한글, 영문, 숫자에 대한 정렬 알고리즘 오라클에서 제공하는 order by 에 대힌 default 정렬 순서 => 숫자 > 영문 > 한글 order by convert (컬럼명, 'VN8VN3') => 숫자 > 한글 > 영문 order by convert (컬럼명, 'US8ICL') => 한글 > 영문 > 숫자 order by convert (컬럼명, 'ISO2022-KR') => 한글 > 숫자 > 영문 order by convert (컬럼명, 'UTFE') => 영문 > 한글 > 숫자 출처: http://cafu.tistory.com/55
ORA-01745: 호스트/바인드 변수명이 부적합합니다 오라클 ORA-01745: 호스트/바인드 변수명이 부적합합니다 이런 에러의 경우에는 쿼리에 콤마가 빠졌을 경우에 예를 들면 insert into table명 ( a , b ) values ( ? ? ) ==>위와 같이 입력값인 ? ? 부분에 ,(콤마) 가 없는 경우 에러가 납니다. 그래서 쿼리문 작성할 때는 한 눈에 잘 들어오도록 정렬을 잘해서 작성하는게 좋습니다.
ORA-01476: 제수가 0 입니다 오라클 에러 : ORA-01476: 제수가 0 입니다. 나누기 할 때 나오는 에러입니다. 분수 : 분자 / 분모 (2/4) --> 2 분자 , 4 분모 피제수, 제수 (2/4) --> 2 피제수 , 4 제수 나누어지는수 , 나누는 수 (2/4) --> 2 나누어지는 수 , 4나누는 수 제수는 나누는 수를 말하고 분수로 치면 분모에 해당하는 값 그냥 생각하기에 3 / 0 = 0 인데 왜 안되는지 이해가 안가지만 안되니까 상황에 맞춰서 써야된다. 예) select 5/0 from dual , select 5/'0' from dual ->혹시나 하고 실행해보니 에러난다. ㅋㅋㅋ 예) select 5/null from dual ->이건 해보니 그냥 문자로 인식해서 에러는 안난다. 예) select 0/1 fro..
오라클 LIKE 전체 검색 주의할 점 * 오라클 LIKE 전체 검색 주의할 점 보통 전체 검색할때 LIKE 문을 사용합니다. 예) select * from 테이블명 where 컬럼명 like '%' 을하면 전체 검색이 된다. 하지만 검색하는 컬럼이 null을 허용하면 위의 쿼리에 대한 전체 검색 결과가 틀리게 나온다. like검색시 null이 있는 컬럼은 포함시키지 않기 때문이다. * 컬럼 값에 null 이 있는 경우의 전체 검색할 경우에는 컬럼명 is null 을 추가해야된다. 예) select * from 테이블명 where 컬럼명 like '%' or 컬럼명 is null ibatis같은 동적쿼리문을 사용하는 쿼리에서는 if조건을 걸어서 조건절에서 아예 검색할 컬럼을 빼서 조회를 해야 전체 조회가 된다. select * from 테이블..
지역별 사람수 구하는 쿼리 오라클에서 사용하는 쿼리임 ms-sql 은 nvl 대신 isnull , sugstr 대신 substring 사용하면 가능 SELECT COUNT(*) as tot, NVL(COUNT(CASE WHEN SUBSTR(basc_addr,1,2) = '서울' THEN 1 END),0) as sol, NVL(COUNT(CASE WHEN SUBSTR(basc_addr,1,2) = '광주' THEN 1 END),0) as kju, NVL(COUNT(CASE WHEN SUBSTR(basc_addr,1,2) = '대구' THEN 1 END),0) as dgu, NVL(COUNT(CASE WHEN SUBSTR(basc_addr,1,2) = '대전' THEN 1 END),0) as djn, NVL(COUNT(CASE WHE..

반응형