전체 글 22

TO_CHAR / LIKE

TO_CHAR('숫자', 'FM9990.09') - 좌우 공백 제거 - 숫자 형식 지정 가능 9 : 가변적인 값으로 0이거나 숫자가 없을 시 값을 버림 0 : 고정적인 값으로 변환된 숫자의 길이를 맞추고 싶으면 원하는 길이만큼 0으로 채우면 됨 출처: https://kongda.tistory.com/36 [콩다코딩:티스토리] LIKE 여러 개 쓰는 법 ← OR로 묶을 수 밖에 없음! SELECT CAR_TYPE FROM CAR_RENTAL_COMPANY_CAR WHERE OPTIONS LIKE '%통풍시트%' OR OPTIONS LIKE '%열선시트%' OR OPTIONS LIKE '%가죽시트%'

C.TTT 2026.01.22

SUBSTR

SUBSTR("문자열", "시작위치", "길이") ROUND(숫자, 자릿수) 👉 지정한 자릿수만큼 반올림 - ROUND(123.4567) -> 123 - ROUND(123.4567, 1) -> 123.5 - ROUND(123.4567, 2) -> 123.46 - ROUND(123.4567, 3) -> 123.457 TRUNC(숫자, 자릿수) 👉 소수점 이하를 모두 버리고 정수만 반환 *ROUND와 같이 반올림을 하지 않고, 지정한 자릿수 이후로 버림 - TRUNC(123.4567) -> 123 - TRUNC(123.4567, 1) -> 123.4 - TRUNC(123.4567, 2) -> 123.45 - TRUNC(123.4567, 3) -> 123.456

C.TTT 2026.01.20

ROUND / GROUP BY

ROUND(숫자, 자릿수) : 반올림 함수 - 자릿수를 지정하면 해당 자릿수에서 반올림하고, 자릿수를 생략하면 소수점 첫째 자리에서 반올림 GROUP BY - SELECT에 나온 표현식을 그대로 기준으로 삼는 것이 원칙 SELECT TO_NUMBER(TO_CHAR(DATETIME, 'HH24')), COUNT(*) FROM ANIMAL_OUTS WHERE TO_CHAR(DATETIME, 'HH24') BETWEEN '09' AND '19' *GROUP BY TO_CHAR(DATETIME, 'HH24') *ORDER BY HOUR; GROUP BY → TO_CHAR( ) 은 문자열로 묶어도 문제 없음. 문자열로 묶어도 잘 묶이기(?) 때문 ORDER BY → TO_NUMBER( ) 은 숫자 정렬과 ..

C.TTT 2026.01.12

비동기 통신을 활용한 코드 리팩토링 (Feat. 캐싱)

1. CASE개발할 때는 보통 서버를 혼자 쓰다 보니, 서버 부하나 지도 로딩 속도 같은 성능 이슈를 크게 체감하지 못했다.무엇보다 "일단 기능부터 빨리 만들자"가 우선이었고, 그때는 성능까지 신경 쓸 여유가 없었다.(솔직히 말하면… 약간 핑계일 수도 있다)그런데 이 시스템을 여러 명이 동시에 사용하는 상황을 떠올려보니 이야기가 달라졌다.Grid에서 체크박스를 클릭할 때마다 거리 계산 요청매번 WFS 호출로 Polygon 재조회체크박스 선택/해제 반복 시 같은 데이터가 중복 요청이 흐름은 사용자가 늘어날수록 호출량이 폭증할 수밖에 없고, 결국 지도 로딩 지연이나 DB/서버 부하 증가로 이어질 가능성이 높았다.그래서 개발이 끝난 뒤, 실사용 환경을 고려한 코드 리팩토링에 들어갈 수밖에 없었다. 2. CAU..

3 2026.01.02

[ API ] VWorld API 연동을 통한 지도 시스템 구현 - 2 (Query)

[ API ] VWorld API 연동을 통한 지도 시스템 구현 - 2 (Query)- 조회 쿼리를 만들면서 배운 SQL SKill 1. CASE지도 기반 기능을 구현하면서 인근 지역 발전소 조회라는 도메인 요구사항을 쿼리로 풀어내야 했다. 이 기능은 단순한 조회가 아니라 어떤 신청인지 + 어떤 설비인지 + 어떤 진행 상태인지 등 여러 조건이 동시에 얽혀 있는 복합 로직이었다. 이번 글에서는 해당 쿼리를 구현하면서 배운 실무형 SQL 패턴을 정리해본다. 2. Used Code1 ) 처음 본 '변수 활용 방식'(1) V_TEMP_ID = -1 패턴 : 분기용 변수AND (V_TEMP_ID = -1 OR A.TEMP_ID = V_TEMP_ID)V_TEMP_ID = -1이면 → 필터를 적용하지 않는다(전체 ..

3 2025.12.22

[ API ] VWorld API 연동을 통한 지도 시스템 구현

프로젝트에서 VWorld API를 활용해Polygon을 기반으로 한 거리 계산 기능이 있는 지도 시스템을 구현해야 했다. 배경 지도, 지적도 경계, 분석용 벡터 데이터를 각각 다른 API로 구성하고이를 한 화면에서 결합해 직관적이면서도 빠르게 동작하는 지도 기능을 만드는 것이 목표였다. 1. CASE지도 기반의 최단거리 계산 기능이 핵심 요구사항이었다.기존 시스템은 주소 리스트만을 기준으로 거리를 판단하고 있었고,그 결과 사용자가 주소를 하나씩 비교하며 직접 거리를 계산하는 비효율이 존재했다. 이 문제를 해결하기 위해단순 주소 비교가 아닌 데이터(Polygon)를 활용한 방식으로 접근하기로 했다. 구체적인 해결 방안은 다음과 같다. 1) WFS API를 이용해 PNU 기준의 Polygon 좌표(위·경도 ..

3 2025.12.12

[Tool] 진단 도구 | 웹 취약점과 소스 취약점

2024-12-31(화) 1. CASE프로젝트가 어느 정도 완성이 되어 전체적으로 취약점은 없는지 프로그램을 이용해서 점검을 했다. 점검하는 과정은 간단했지만 이 프로그램을 사용할 누군가와 언젠가는 다시 사용할 나를 위해 작성해 본다. 2. How to Use1) 프로그램 : 스패로우(SPARROW)2) 사용 가이드*공식 사이트 https://docs.app.sparrowcloud.ai/user-guide.html [ 소스 취약점 ]① SPARROW 로그인 ② 좌측 상단의 [목록] - 새 프로젝트 만들기(점검한 적이 있는 프로젝트라면 해당 프로젝트 경로에서 src 폴더만 추가하면 됨) ③ 프로젝트 키 입력(또는 자동) - 상위 프로젝트 선택 - [추가] ④ [분석 대상]에 src 폴더 경로 추가 - [저..

2 2025.04.03