DB

    [DB] JPA 버전 다운그레이드 과정에서 동작하던 sql 이 동작하지 않는다면(feat. native query)

    발단 정부 프레임워크 사용을 위해 기존의 spring boot v3 가 아닌 v2 로 다운그레이드를 진행하면서 sql 이 실행되지 않아 동작하지 않는 경우가 발생하였다. 프로젝트를 진행하며 DB 검색을 위한 조건이 많지 않다면 JPA 의 native query 를 사용하였습니다. 이 때 sql 작성시 `;`을 붙여 해당 query 의 끝을 의미하게 하였습니다. 환경 spring boot starter jpa 페이징과 같이 사용 ... 원인 Spring boot 의 다운그레이드를 언급한건 jpa 의 버전이 spring boot 버전에 따라 달라지는 것을 명시하기 위함이다. 마이그레이션 전에 동작했지만 이후 동작하지 않은 이유는 `;` 때문이었습니다. JPA 버전에 따른 sql 전처리? v3 에서는 `;` ..

    [MariaDB] TIME_TO_SEC 내장함수를 사용해서 TIME 형식의 string 값을 초로 변경해보자

    설명 MariaDB 는 TIME_TO_SEC(time) 내장함수를 제공한다. time : TIME 형식의 값을 의미한다. ex) TIME_TO_SEC('21:48:24') MariaDB 버전에 따라 다른 타입의 값을 반환한다. 5.3 이하 : INT 값을 반환한다. 5.3 이후 : DOUBLE 값을 반환한다. 5.3 이후의 MariaDB 버전에서는 DOUBLE 로 값을 반환하기 때문에 microseconds 까지 값을 보존한다. 사용 예시 SELECT TIME_TO_SEC('21:50:44'); -- > 78644 출처 TIME_TO_SEC Returns the time argument, converted to seconds. mariadb.com

    [MariaDB] STR_TO_DATE 내장함수를 사용해서 string 을 DATETIME 으로 변환하자.(feat. 사용예시)

    설명 MariaDB 에서는 STR_TO_DATE(str, format) 내장함수를 제공한다. str : string 형태의 입력값이다. format : format 형식의 string 입력값이다. ex) STR_TO_DATE('21:31:58', '%H:%i:%s') STR_TO_DATE 는 str 에 따라서 DATE, TIME 혹은 DATETIME 으로 반환하게 된다. 만약 str 을 시간, 날짜 형식의 값으로 입력하지 않게 되면 null 이나 syntax error 를 응답하게 된다. 사용 예시 특정 영상의 시간을 기록하는 테이블이 있다. 테이블에서는 videoLength 컬럼을 기록하고 있으며 그 형태는 'HH:mm:ss' 형태의 값이다. 테이블을 활용해서 영상의 총 시간에 대해 추출해보자. CRE..

    [MariaDB] csv 형태로 저장된 필드를 조회하고 싶다면 사용하는 내장함수 FIND_IN_SET

    발단 외래키로 존재하는 값이 달라지지 않는다고 가정하고, 우리는 DB 를 설계할 때 종종 조회를 위해 외래키를 csv 형태로 가지는 field 를 설계한다. 이런 상황에서 조회할 때 사용하면 좋은 내장함수를 발견하게 되었다. 설명 만약 csv 형태로 값을 저장하는게 아니라면 field 에 특정구조를 가지게 한다. 예를들면 prefix, suffix 로 `|` 를 사용하는 것이다. 1,2,3 -> |1|2|3| 으로 저장하여 3을 조회하고 싶을 때 |3| 을 조회하면 된다. 위와 같은 구조도 상황에 따라서 사용하면 되지만, 처음에 csv 형태로 값을 저장하기로 하였기에 구조를 변경하고 싶지 않았다. 따라서, FIND_IN_SET 을 통해 문제를 해결하였다. 해결 FIND_IN_SET 은 두개의 파라미터를 ..

728x90