application.yml 파일 spring: datasource: url: jdbc:oracle:thin:@127.0.0.1:1521:XE username: seohae password: pawd123 driver-class-name: oracle.jdbc.driver.OracleDriver Ojdbc6 나의 프로젝트 버전은 아래와 같다. id 'org.springframework.boot' version '2.4.2' Oracle DB 연동을 하기위해 Ojdbc6 을 build.gradle 에 추가했다. runtimeOnly 'com.oracle.database.jdbc:ojdbc6' 하지만 제대로 연동되지 않는다. Ojdbc6 을 포함하게되면 application.yml 파일 안의 driver-c..
오라클 이미지 설치 docker pull jaspeen/oracle-xe-11g docker-compose 파일 생성 version: '2' services: oracle11g: image: jaspeen/oracle-xe-11g container_name: oracle11g volumes: - ~/경로명:/u01/app/oracle jaspeen/oracle-xe-11g ports: - 1521:1521 여기서 경로명은 도커 안의 오라클의 데이터를 저장할 로컬 PC의 위치이다. docker-compose 파일 실행 1) 로컬PC에 이전에 생성한 docker-compose 파일의 위치로 이동 cd 경로 2) docker-compose 실행 docker-compose up -d 3) docker-compo..
Before WM_CONCAT() 사용 전의 select 조회 select * from dept; DNAME AA BB CC After WM_CONCAT() 사용 후의 select 조회 select WM_CONCAT(DNAME) from dept; DNAME AA,BB,CC 위 결과를 보았을때, WM_CONCAT() 함수를 사용하여 원하는 컬럼의 여러 데이터를 하나의 행으로 표현할 수 있다.
to_char 아래는 ORA-01481: 숫자 형식 모델이 부적합합니다 에러가 발생 sche_date는 yyyymmdd 형식인데, 오라클에서 이를 Number 형식으로 인식한다. 숫자를 ‘YYYY-MM-DD’형식으로 변경하려고하니 에러가 발생한다. select to_char(sche_date, 'YYYY-MM-DD') from schedule; to_date 아래는 정상작동한다. 오라클에서 sche_date을 날짜로 인식한다. select to_date(sche_date, 'YYYY-MM-DD') from schedule; to_date - to_char to_date로 날짜로 변경해준 후에, to_char을 사용하면 된다. select to_char(to_date(sche_date, 'YYYY-MM-D..
case~when~then 문 CASE col1 WHEN 'a' THEN '햄버거' WHEN 'b' THEN '피자' END AS food CASE~THEN~WHEN 문은 위 예제 한줄로만 봐도 충분히 이해가 가능하다. CASE 컬럼이 WHEN 해당 값이라면, THEN 해당 값으로 변경한다. CASE ~ WHEN ~ THEN ~ WHEN ~ THEN ~ ELSE '' END -> ELSE를 사용하여 나머지 값들도 설정해줄수 있다. 또는, CASE WHEN col1 = 'a' THEN '햄버거' 라고도 할 수 있다.
mybatis 쿼리문 실행결과 컬럼(열) 순서를 고정 SELECT col1, col2, col3 FROM test 위 SELECT 해온 쿼리의 결과를 리스트로 받아올때, 리스트의 순서를 col1, col2, col3로 고정시키고 싶은 경우가 있다. 하지만 hashMap을 resultType으로 받는 위 결과를 보면 SELECT 컬럼 순서대로 조회되지 않는다. SELECT col1, col2, col3 FROM test 결과타입 resultType을 "java.util.LinkedHashMap" 으로 변경하면, SELECT 선언 컬럼 순서대로 데이터를 담을 수 있다.
NULL 변환 함수 1. NVL 함수 NULL 값을 다른 값으로 변환할때 사용하며, 모든 데이터 타입에 사용할 수 있다. SELECT NVL(col1, 0) FROM exam exam 테이블의 컬럼 col1이 null이라면, 0을 출력한다. 2. NULLIF 함수 NULLIF(col1, col2) 컬럼 col1의 값과 컬럼 col2의 값이 동일하면 NULL을 출력하고, 동일하지않으면 col1의 값을 출력한다. 3. COALESCE COALESCE(col1, col2, col3, ...) col1, col2, col3... 중에서 순서대로 비교하여 null이 아닌 첫번째 값을 가져오고, 모두 null이면 0을 출력한다.
trim 사용하는 방법 UPDATE examTable exam1 = #{exam1}, exam2 = #{exam2}, WHERE idx = #{idx} mybatis에서 update 쿼리문을 사용하다보면 위처럼 조건문만 사용하게 되는 경우가 생긴다. 그때 콤마(,) 를 어떻게 사용해야 sql문 error가 발생하지 않을지 고민하게 된다. 그럴때는 위 예제처럼 trim 이라는것을 사용하자. +댓글내용 참고 (gyeongtae kim님) - prifix = tirm 안에있는 모든 문자열의 앞에 붙여줄 문자열을 입력하는 곳 - suffixOverrides = trim 안에있는 모든 문자열의 조건문을 판별해서 입력된 문자열의 맨 끝에서부터 찾아서 지워줄 문자열을 입력하는 곳 Oracle 에서 NVL 함수 사용하..