diff --git a/DB-DDL/maria/ddl/ibmsdb/FN_ADDR_SIGUNGU_REMOVE.sql b/DB-DDL/maria/ddl/ibmsdb/FN_ADDR_SIGUNGU_REMOVE.sql new file mode 100644 index 0000000..5fc94dd --- /dev/null +++ b/DB-DDL/maria/ddl/ibmsdb/FN_ADDR_SIGUNGU_REMOVE.sql @@ -0,0 +1,37 @@ +CREATE OR REPLACE FUNCTION FN_ADDR_SIGUNGU_REMOVE(FULL_ADDRESS VARCHAR(500)) RETURNS VARCHAR(500) +BEGIN + DECLARE suffix VARCHAR(500); + DECLARE first_word VARCHAR(100); + DECLARE second_word VARCHAR(100); + DECLARE Third_word VARCHAR(100); + + -- 주소의 첫 번째 단어 추출 (공백 기준) + SET first_word = SUBSTRING_INDEX(full_address, ' ', 1); + SET second_word = SUBSTRING_INDEX(full_address, ' ', 2); + SET Third_word = SUBSTRING_INDEX(full_address, ' ', 3); + + -- 경기도 고양시 일산서구 법곳동 11-111 + -- 서울특별시 영등포구 신길동 11-111 + -- 경기도 양평군 양평읍 11-111 + -- 인천광역시 부평구 구산동 370 + + IF first_word LIKE '%도' THEN + SET suffix = SUBSTRING(full_address, LOCATE(' ', full_address) + 1); + ELSEIF first_word LIKE '%시' THEN + SET suffix = SUBSTRING(full_address, LOCATE(' ', full_address) + 1); + END IF; + + IF second_word LIKE '%시' THEN + SET suffix = SUBSTRING(suffix, LOCATE(' ', suffix) + 1); + ELSEIF second_word LIKE '%군' THEN + SET suffix = SUBSTRING(suffix, LOCATE(' ', suffix) + 1); + ELSEIF second_word LIKE '%구' THEN + SET suffix = SUBSTRING(suffix, LOCATE(' ', suffix) + 1); + END IF; + + IF Third_word LIKE '%구' THEN + SET suffix = SUBSTRING(suffix, LOCATE(' ', suffix) + 1); + END IF; + + RETURN LTRIM(suffix); -- 최종 결과 반환 +END; \ No newline at end of file diff --git a/DB-DDL/maria/ddl/ibmsdb/FN_NUM_TO_KOR_BIG.sql b/DB-DDL/maria/ddl/ibmsdb/FN_NUM_TO_KOR_BIG.sql new file mode 100644 index 0000000..b67c980 --- /dev/null +++ b/DB-DDL/maria/ddl/ibmsdb/FN_NUM_TO_KOR_BIG.sql @@ -0,0 +1,53 @@ +CREATE FUNCTION FN_NUM_TO_KOR_BIG(n BIGINT) RETURNS VARCHAR(255) +BEGIN + DECLARE units CHAR(9) DEFAULT '일이삼사오육칠팔구'; + DECLARE positions CHAR(3) DEFAULT '십백천'; + DECLARE big_units CHAR(4) DEFAULT '만억조경'; -- 필요 시 '해' 등 추가 가능 + DECLARE result VARCHAR(255) DEFAULT ''; + DECLARE section BIGINT; + DECLARE section_str VARCHAR(50); + DECLARE i INT; + DECLARE digit INT; + DECLARE len INT; + DECLARE part VARCHAR(50); + DECLARE idx INT DEFAULT 0; + DECLARE temp BIGINT; + + IF n = 0 THEN + RETURN '영'; +END IF; + + SET temp = n; + + -- 억 단위 이상 처리 + WHILE temp > 0 DO + SET section = temp % 10000; -- 4자리씩 자르기 + SET section_str = ''; + SET len = LENGTH(section); + SET i = 1; + + WHILE i <= 4 DO + SET digit = FLOOR(section / POW(10, 4-i)) % 10; + IF digit <> 0 THEN + SET section_str = CONCAT(section_str, SUBSTRING(units, digit, 1)); + IF 4-i > 0 THEN + SET section_str = CONCAT(section_str, SUBSTRING(positions, 4-i, 1)); + END IF; + END IF; + SET i = i + 1; + END WHILE; + + IF section_str <> '' THEN + IF idx = 0 THEN + SET result = section_str; + ELSE + SET result = CONCAT(section_str, SUBSTRING(big_units, idx, 1), result); + END IF; + END IF; + + SET temp = FLOOR(temp / 10000); + SET idx = idx + 1; + END WHILE; + + RETURN result; +END \ No newline at end of file