목록IT/DB (8)
코드 짜는 티모
ORACLE 문자열 길이 찾기 오라클에서 문자열의 길이를 찾기 위해서는 LENGTH를 사용한다. LENGTH : 문자열의 글자 수 LENGTHB : 문자열의 바이트 수 (시스템의 charset에 따라 한글을 1글자당 2byte OR 3byte 일 수 있다.) SELECT LENGTH('오라클') , LENGTH('오라클 SQL') , LENGTHB('오라클') , LENGTHB('오라클 SQL') FROM dual LENGTH('오라클') : 3 LENGTH('오라클 SQL') : 7 LENGTHB('오라클') : 9 LENGTHB('오라클 SQL') : 13 ORA-01704: 문자열이 너무 깁니다 라는 오류를 보게되면 들어온 값이 선언되어있는 사이즈보다 클 수 있으니 체크 후 값을 잘라서 insert..
ORA-01031 : insufficient privileges --> 권한이 불충분합니다. 발생이유 4가지 DBA 권한이 없는 유저로 접속시도 ORACEL_SID 가 제대로 설정이 안된 경우 pwd 파일 설정이 제대로 되지 않음 $ORACLE_HOE/network/admin에 있는 sqlnet.ora 파일에 "SQLNET.AUTHENTICATION_SERVICES = (NONE)" 내용 주석처리 이번의 경우에는 'DBA 권한이 없는 유저로 접속 시도'를 해서 발생한 문제 사용되는 계정에 해당 테이블 조회권한이 누락되어서 그렇다. 추가 권한요청하면 문제해결~
자바 로직단에서 JDBC붙이고 executequery든 executeupdate를 사용해서 DB의 row를 DML하는 경우가 있을 것이다. 자바에서 String sql = "update emp set update_date = sysdate where name = '티모'"; 이 쿼리를 실행하려고 한다. emp테이블에서 티모라는 name을 가진 로우의 update_time의 값을 현재날자(sysdate)로 바꾸는 쿼리이다. 쿼리에는 문제가 없어보이며 execute해도 emp테이블의 조건에 맞는 row는 update가 쳐질것이다. 여기서 내가 겪은 너무 간단하지만 이유를 몰랐던 바보같았던 실수가 있다. udpate를 쳤는데 db의 날짜가 시분초가..
SQL 문자열 자르기 split하여 비교 어떠한 입력값이 , 를 기준으로 여러개의 데이터가 들어온다. 예를 들어 ' 3,34,356,3678' 와 같은 데이터를 입력받고 ,를 기준으로 split(tokenize)하여 저 값과 일치하는 데이터를 추출하고 싶다. 프로그래밍 언어였다면 split이나 tokenizer를 사용하여 배열어 넣든 쉽게 구현할수 있다. 쿼리문으로는 substring을 해서 꺼낼 수 있겠지만 하나씩 가져와야한다. ( 좋은 방법은 아닌듯 하다. ) 그래서 알아보니 계층구조와 level 을 사용하면 간단하게 구현이 가능하다. 123SELECT TRIM(REGEXP_SUBSTR(TXT, '[^,]+', 1, LEVEL))FROM (SELECT RTRIM('3,34,356,3678',',') ..