728x90
반응형

DB 228

[DB][MySQL] 동적으로 년월 생성

목표20250101 ~ 20251231 범위의 YYYYMM(년월) 목록을 동적으로 생성. 20250101 ➡️ startDt 20251231 ➡️ endDt WITH RECURSIVE DateSeries AS ( -- 시작 날짜를 YYYYMM 형식으로 변환하여 가져오기 SELECT DATE_FORMAT(STR_TO_DATE(#{startDt}, '%Y%m%d'), '%Y%m') AS YYYYMM UNION ALL -- 이전 월에서 1개월 추가한 YYYYMM을 생성 SELECT DATE_FORMAT(DATE_ADD(STR_TO_DATE(YYYYMM, '%Y%m'), INTERVAL 1 MONTH), '%Y%m') FROM DateSeries WHERE YYYYMM

DB 2025.03.04

[MySQL] JSON_CONTAINS

JSON_CONTAINS()는JSON 배열은 거기에 특정 값이 존재하는지 확인하는 함수 입니다. 쉼표FIND_IN_SET()다르게, 정규화된 JSON 데이터를 사용할 때 유용 합니다. 📌 사용법JSON_CONTAINS(target, candidate[, path]) target:동작candidate:찾다path($.key_name형태)✅ JSON 배열 찾기SELECT JSON_CONTAINS('[1, 2, 3, 4]', '3'); 결과: 1 ( 3이 배열에 존재)SELECT JSON_CONTAINS('[1, 2, 3, 4]', '5');결과: 0 ( 5가 배열에 없음) ✅ WHERE 에서 활용예: 특정 사용자의 역할(role)이 포함된 데이터 찾기SELECT * FROM users WHERE JSON_..

DB 2025.02.25

[MySQL][SQL] FIND_IN_SET

FIND_IN_SET()함수는 MySQL에서 사용되는 문자열 검색으로 함수, 특정 값이 쉼표(,)로 구분된 문자열 목록 안에 존재하는지 확인하는 데 사용됩니다. 이 함수는 주로 데이터베이스를 기준으로 하는 CSV(Comma-Separated Values) 형식으로 저장될 때 유용합니다. 📌 사용법FIND_IN_SET(needle, haystack)needle: 검색할 값 (찾고자 하는 단일 값)haystack: 쉼표(,)로 구분된 문자열 목록이 함수는 needle내 haystack에서 몇 번째 위치(index)에 있는지를 반환합니다. 그렇다면 needle이 haystack에 없으면 0, NULL이 외에는 NULL반환하겠습니다. 📌 실험✅ 기본 사용SELECT FIND_IN_SET('b', 'a,b,c..

DB 2025.02.24

[DB][Oracle] SUBSTR / SUBSTRING

Oracle에서는 SUBSTR 함수를 사용하며, SUBSTRING 함수는 존재하지 않습니다.이는 SQL Server 등 일부 다른 DBMS에서 사용됩니다.두 함수는 본질적으로 비슷한 기능을 제공하지만, 사용법과 호환성 면에서 차이가 있습니다. Oracle SUBSTR SUBSTR(문자열, 시작위치, 길이)문자열: 추출 대상 문자열시작위치: 추출 시작 위치 (1부터 시작, 음수일 경우 문자열 끝에서부터 시작)길이 (선택): 추출할 문자열의 길이 (생략 시 시작 위치부터 끝까지 추출)예제:SELECT SUBSTR('OracleDatabase', 1, 6) AS result FROM DUAL;-- 결과: 'Oracle'SELECT SUBSTR('OracleDatabase', -8, 4) AS result FR..

DB 2025.01.26

[DB][Oracle] FLOOR / TRUNC

Oracle에서도 FLOOR를 사용할 수 있습니다.FLOOR 함수는 값을 소수점 이하를 버리고 가장 가까운 정수로 내립니다.따라서 소수점 이하를 버리는 목적으로는 FLOOR와 TRUNC 모두 사용 가능합니다.하지만 FLOOR는 항상 값을 내리는 방식으로 동작하고,TRUNC는 소수점 이하를 제거하는 것이 목적이므로,소수점 이하를 단순히 버리는 작업에는 TRUNC가 더 명확한 의도를 전달하는 데 적합합니다. FLOOR vs TRUNC의 차이:함수동작예 (입력값: -2.8, 2.8)결과FLOOR가장 가까운 낮은 정수로 내림-3, 2항상 아래로 내림TRUNC소수점 이하를 잘라내고 정수 부분만 반환-2, 2부호에 관계없이 소수점 제거

DB 2025.01.04

[DB][Oracle] ROW_NUMBER()

Oracle에서 ROW_NUMBER() 사용법1. 기본 사용법전체 데이터를 기준으로 행 번호를 매기는 예제입니다.SELECT EMPLOYEE_ID, NAME, SALARY, ROW_NUMBER() OVER (ORDER BY SALARY DESC) AS RNFROM EMPLOYEES;결과 예시:EMPLOYEE_IDNAMESALARY RN101Alice90001102Bob85002103Charlie80003  2. 그룹별로 번호 매기기 (PARTITION BY)부서별로 번호를 매깁니다.SELECT DEPARTMENT_ID, EMPLOYEE_ID, NAME, SALARY, ROW_NUMBER() OVER ( PARTITION BY DEP..

DB 2025.01.03

[DB] GROUP_CONCAT

GROUP_CONCAT([DISTINCT] column_name [ORDER BY column_name ASC|DESC] [SEPARATOR 'separator'])옵션 설명DISTINCT공용화된 값은 제거되고 고유한 값만 연결됩니다.예:GROUP_CONCAT(DISTINCT column_name)ORDER BY연결된 커넥터의 관계를 알려드립니다.예:GROUP_CONCAT(column_name ORDER BY column_name DESC)SEPARATOR연결된 데이터 사이에 구분을 지정합니다. 그것은 휴식표( ,)입니다.예:GROUP_CONCAT(column_name SEPARATOR '|')  기본 사용 SELECT GROUP_CONCAT(name) AS namesFROM employees;결과 :H..

DB 2024.12.14

[DB][Oracle] 값이 없는 경우 update

NOT IN과 IS NULL사용UPDATE your_tableSET column_to_update = 'new_value'WHERE column_name NOT IN ('value1', 'value2', 'value3') OR column_name IS NULL;   NOT EXISTS사용UPDATE your_table t1SET column_to_update = 'new_value'WHERE NOT EXISTS ( SELECT 1 FROM another_table t2 WHERE t1.column_name = t2.reference_column);  조건 설명NOT IN: 외부 값이 지정된 값 목록에 포함되지 않을 때 조건이 참입니다.IS NULL: 대체 값이 NULL인 경우 조건이 참..

DB 2024.12.02

[DB][Mybatis] size() / length()

1.size()적용 대상: Collection 인터페이스를 구현하는 유형(예: List, Set, Map) 또는 객체 java.util.Collection.목적: 컬렉션에 있는 요소의 수를 반환합니다.예:의 경우 List, 호출하면 list.size()목록에 있는 요소의 개수가 나옵니다.의 경우 Map, 호출하면 map.size()키-값 쌍의 개수가 반환됩니다. 0">  2.length적용 대상: 배열( String[], int[], 등).목적: 배열의 요소 수를 반환합니다. 메서드가 아니라 속성이므로 괄호를 사용하지 않습니다.예:a의 경우 String[] array, 호출하면 array.length배열에 있는 요소의 개수가 나옵니다. 0">  주요 차이점특징size()length유형방법 ( ..

DB 2024.11.28
728x90
반응형