mariadb
[Spring Boot] Spring Boot 에서 JPA 로 값을 수정시 알 수 없는 이유로 sql 에러가 발생할 때(feat. SQL Error: 1064, SQLState: 42000)
발단 DB 에서 값을 변경하려고 JPA 를 통해 시도하였을 때 필자 입장에서는 단순한 VARCHAR(1) 구조의 필드 였음으로 수정되어 마땅한 상황이었지만, 왜인지 SQL Error: 1064, SQLState: 42000 오류가 지속적으로 발생하였다. 설명 필자가 사용한 테이블에는 DB 의 예약어를 포함하고 있었다 (예약어인지 모르고 필드로 사용). 테이블의 값을 수정하려 할 때 예약어를 수정하려 한 것은 아니지만, JPA 가 객체 형태로 영속성 매니저에게 값을 전달하고 있었기에 DB 에 전달한 query 를 실행하면서 syntax error 가 발생하게 된것이다. 예시 DB 구조 CREATE TABLE `test1` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `openYn..
[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 은 두개의 파라미터를 ..