728x90
반응형

DB 196

[Mybatis] 숫자 컬럼인데 값이 0일때 컬럼값 != null and 컬럼값 !='' 을 통과하지 못해서 값이 없는 것으로 처리될때

을 사용해서 안에 컬럼 값이 전부  처리해서 값이 null 이나 빈문자열이 아니면 update 하려고 작성을 하였는데,값이 전부 0 이니까 아무 값도 없는 것으로 나와서 update 문에 SET 이 빠진 것으로 간주되어 에러가 났다.어차피 null 이면 0으로 입력한다는  COALESCE(TO_NUMBER(NULL),0) 으로 작성해 둬서 if문을 다 뺐다. MyBatis에서 `` 문에서 값을 평가할 때 `null`, `""` (빈 문자열), 때로는 `0`과 같은 특정 값이 "falsy"로 동작할 수 있습니다. 즉, 특히 표현식이 부울 검사와 유사한 경우 조건 검사를 통과하지 못합니다. ### MyBatis에서 Falsy 값과 `0`에 대한 설명 **JavaScript**와 같은 프로그래밍 언어에서 `n..

DB 2024.11.03

[DB][MySQL] 날짜+시간 문자열과 날짜문자열 비교하기

SELECT '설치' AS 분류, EO_RQ_TP AS 요청유형, CUST_CD, CT.CUST_NM AS 고객사, CR_CD, CR.CR_SCD AS 고객번호, EO_STAT_TP AS 요청상태, STR_TO_DATE(CONCAT(RQ1_DT, RQ1_TM), '%Y%m%d%H%i') AS 완료요청일 -- 날짜와 시간을 결합하여 변환FROM T_EO JOIN CUSTOMER_TABLE CT ON T_EO.CUST_CD = CT.CUST_CD -- 고객사 정보 JOINJOIN CUSTOMER_RELATION_TABLE CR ON T_EO.CR_CD = CR.CR_CD -- 고객번호 정보 JOINWHERE RS_USER_CD = 로그인유저 -- 로그인한 ..

DB 2024.10.23

[DB][Oracle] 날짜+시간 문자열과 날짜문자열 비교하기

오라클에서 RQ1_DT와 RQ1_TM을 날짜 형식으로 변환한 후 결합하고, CMP_REQ_DT와 동일한 형식으로 비교하기 위해 TO_DATE 함수를 사용할 수 있습니다.RQ1_DT와 RQ1_TM은 각각 YYYYMMDD와 HH24MI 형식의 문자열이므로, 이를 TO_DATE로 변환하여 날짜와 시간을 포함한 형식으로 만듭니다.CMP_REQ_DT는 날짜 정보만 포함하므로 이를 TO_DATE로 변환하여 일관성 있게 처리합니다.SELECT '설치' AS 분류, EO_RQ_TP AS 요청유형, CUST_CD, CT.CUST_NM AS 고객사, CR_CD, CR.CR_SCD AS 고객번호, EO_STAT_TP AS 요청상태, TO_DATE(RQ1_DT || RQ1_TM, ..

DB 2024.10.22

[DB][Oracle] 여러행 삽입하기

INSERT ALL은 Oracle에서 여러 행을 한 번에 다른 행으로 삽입할 때 사용하는 구문입니다. 여러 개의 INSERT 문을 결합하여 단일 트랜잭션으로 처리할 수 있도록 도와줍니다. 이 방식은 한 번에 여러 행을 삽입해야 할 때 매우 유용합니다.INSERT ALL 기본 구조INSERT ALL INTO table_name (column1, column2, ...) VALUES (value1, value2, ...) INTO table_name (column1, column2, ...) VALUES (value1, value2, ...)SELECT 1 FROM DUAL;  주요 요소 설명INSERT ALL:여러 행을 삽입하기 위한 명령어입니다.ALL을 사용하면 조건 없이 모든 데이..

DB 2024.09.29

[DB][Oracle] 컬럼추가, 원하는 위치에 컬럼추가하기

오라클 데이터베이스에서 컬럼을 추가할 때, 컬럼이 원하는 순서로 배치되도록 하는 것은 기본적으로 지원되지 않습니다. 오라클은 컬럼을 추가할 때, 기본적으로 테이블의 마지막에 추가합니다. 그러나 원하는 순서로 컬럼을 배치하고자 할 경우, 다음과 같은 방법을 사용할 수 있습니다:1. 테이블 재생성 (Recreate the Table): 가장 확실한 방법은 새로운 테이블을 만들고 데이터를 이전하는 것입니다. 이 방법은 가장 많은 작업이 필요하지만, 원하는 순서로 컬럼을 배치할 수 있습니다.-- 현재 테이블의 스키마와 데이터 백업CREATE TABLE new_table AS SELECT * FROM old_table WHERE 1=2;-- 새 테이블에 원하는 컬럼 순서로 추가ALTER TABLE new_tabl..

DB 2024.09.05

[DB][Oracle] ADD_MONTHS

예시: searchSdate의 이전 달을 구한 후, YYYYMM 형식으로 변환TO_CHAR(ADD_MONTHS(TO_DATE(#{searchSdate}, 'YYYYMM'), -1), 'YYYYMM')설명:TO_DATE(#{searchSdate}, 'YYYYMM'): searchSdate를 날짜 형식으로 변환합니다.ADD_MONTHS(..., -1): 변환된 날짜에서 1개월을 빼서 이전 달을 구합니다.TO_CHAR(..., 'YYYYMM'): 계산된 날짜를 YYYYMM 형식의 문자열로 변환합니다.따라서, 이 구문은 searchSdate가 '202401'이라면, 결과는 '202312'이 됩니다. 예시: searchSdate의 다음 달을 구한 후, YYYYMM 형식으로 변환TO_CHAR(ADD_MONTHS(T..

DB 2024.08.28

[DB][Oracle] TO_TIMESTAMP 함수

TO_TIMESTAMP 함수는 문자열을 TIMESTAMP 데이터 타입으로 변환하는 데 사용됩니다.형식 문자열을 지정하여 입력 문자열의 형식을 정의할 수 있습니다.TO_TIMESTAMP(char[, format])char: 변환할 문자열입니다. 이 문자열은 날짜와 시간 정보를 포함하고 있어야 합니다.format (선택적): 문자열의 형식을 지정하는 형식 문자열입니다. char 문자열이 이 형식에 맞춰서 TIMESTAMP로 변환됩니다. 주요 날짜 및 시간 형식 문자열YYYY: 4자리 연도MM: 월DD: 일HH24: 시간 (0-23)MI: 분SS: 초FF: 프랙션 초 (밀리초 등)  기본 TIMESTAMP 변환 SELECT TO_TIMESTAMP('2024-08-09 15:30:00', 'YYYY-MM-DD ..

DB 2024.08.18

[MySQL] Oracle의 NVL, NVL2를 MySQL에서 구현하기

MySQL에서는 NVL와 NVL2와 유사한 기능을 하는 함수로 IFNULL과 COALESCE, 그리고 IF 함수가 있습니다.각 함수의 사용법과 기능은 다음과 같습니다. IFNULLIFNULL 함수는 오라클의 NVL과 유사하게 첫 번째 인수가 Null인 경우 두 번째 인수를 반환합니다.IFNULL(expr1, expr2)SELECT IFNULL(commission_pct, 0) AS commission FROM employees;이 예제에서는 commission_pct가 Null이면 0을 반환하고, Null이 아니면 commission_pct 값을 반환합니다. COALESCECOALESCE 함수는 다수의 인수를 받아 첫 번째로 Null이 아닌 값을 반환합니다.오라클의 NVL과 비슷하지만, 더 많은 인수를 ..

DB 2024.08.10
728x90
반응형