DataBase/Oracle
-
[Oracle] ORA-01704: 문자열이 너무 깁니다 "string literal too long"DataBase/Oracle 2018. 8. 22. 15:25
4000자가 넘는 글자는 위의 에러를 뱉어낸다. 내가 알기로는 CLOB는 4GB까지 허용된다는데 왜 안될까 찾아보니 아무리 CLOB이라도 한 번 들어갈 때 4000자가 최대인 듯 하다. 해결법은 OKKY에서 퍼왔다. 4000자가 넘지 않는 선까지 문자열을 잘라 TO_CLOB을 사용하는 것이다. 12345UPDATE chocolate_table SET chocolate_ingredient = TO_CLOB('4000자 이하 문자열') || TO_CLOB('4000자 이하 문자열') || TO_CLOB('4000자 이하 문자열') WHERE brand_name = '노브랜드'cs TO_CLOB과 '||' 를 계속해서 연결해주면 4000자 이상의 글자도 넣을 수 있다. 출처: http://okjsp.pe.kr..
-
[Oracle] 컬럼에 html 데이터를 insert 혹은 update하는 방법DataBase/Oracle 2018. 8. 22. 15:18
무작정 html 태그가 달린 데이터를 넣으면 대체변수 입력이란 말이 나와서 뭘 바꿔줘야 할 것 같았는데, 내가 넣고자 하는 데이터는 html 태그 그대로 저장해두고자 한 것이지, 대체하려는게 아니었다. 그래서 구글링을 해서 찾아냈는데, 오라클이 알아서 데이터에 스캔을 하는지 스캔 옵션을 꺼주면 html을 문자열로 보는 것 같았다. (그러면 insert와 update는 문자열로 들어감) 사용 방법은 아래와 같다. 12345show scan; // scan 옵션 상태를 보여줌 set scan off; // scan 옵션을 끔 set scan on; // scan 옵션을 사용함cs
-
MySQL의 INSERT IGNORE을 Oracle에서 구현하기DataBase/Oracle 2018. 8. 17. 15:31
중복키 관리를 위한 function으로 MySQL에서는 INSERT IGNORE이라는 내장함수를 제공한다. INSERT IGNORE은 primary key가 중복될 경우, 데이터를 insert하지 않는다. 0 row affected라는 로그만 반환할 뿐. 이 함수를 Oracle에서 적용해보려고 찾다가 StackOverFlow에서 좋은 해결법을 찾아서 공유한다. MEGER INTO를 활용한 방법인데, 아래처럼 만들어주면 된다. mybatis를 사용하고 있으므로 mybatis식으로 작성했다. 12345678910111213141516MERGE INTO '테이블 명' demo_table USING (SELECT #{PK 파라미터} AS pk_column, #{인서트할 파라미터들} AS demo_table_co..
-
MySQL의 LIMIT 기능을 Oracle에서 ROWNUM을 이용해 구현DataBase/Oracle 2018. 8. 13. 13:27
MySQL에는 Limit라는 기능이 있는데, Oracle에서 이와 같은 기능을 만들 필요가 있었다. MySQL의 Limit는 데이터 수에 원하는 만큼 제한을 둘 수 있는 기능이다. 1) 데이터를 5개만 가져옴 in MySQL 1SELECT * FROM demo_table LIMIT 5;cs 1-1) 데이터를 5개 이하만큼 가져옴 in Oracle 1SELECT * FROM demo_table WHERE ROWNUM
-
on duplicate key update(MySQL) Vs merge into(Oracle) 사용법DataBase/Oracle 2018. 8. 10. 16:48
위의 두 기능은 insert를 하려는데 이미 데이터가 있다면 update를 할 수 있는 function이다. 테이블 하나를 사용하는 것만 정리해둬야겠다.(아직까진 테이블 하나씩만 사용하고 있어서) MySQL의 경우, 123456789101112 INSERT INTO demo_table --테이블명 ( company_seq, --primary key company_name, company_emp_name ) VALUES( 9999, 'tistory', '조르바' )ON DUPLICATE KEY UPDATE -- primary key가 중복일 경우, 해당 primary row에 update company_emp_name = '초콜릿'Colored by Color Scriptercs Oracle의 경우, 12..