DB/ORACLE

[ORACLE] 텍스트 균등분할(균등정렬) FUNCTION

울면서개발하기 2023. 8. 18. 15:19

출력물을 개발하는데, 출력물 툴이 html 버전에서는 균등분할을 지원하지 않는다

오피셜 답변은 아래와 같다.

____________________________________________________________________________________

안녕하세요. 기술개발팀입니다.

텍스트 상자 서식의 경우 WS 뷰어에서만 적용되는 속성으로 HTML 뷰어에서는 제공되지 않는 기능입니다.

HTML 뷰어에서 글자 간격을 조절하기 위해서는 공백문자를 사용하여 조절해주셔야 합니다.

감사합니다.

____________________________________________________________________________________

 

 

그리하여 Bing AI 도움을 받았다.

 

DECLARE
    INPUT_STRING VARCHAR2(4000) := '울면서개발하기';
    OUTPUT_STRING VARCHAR2(4000);
    TOTAL_LENGTH NUMBER := 20; -- 원하는 전체 길이
BEGIN
    DECLARE
        SPACE_COUNT NUMBER := TOTAL_LENGTH - LENGTH(INPUT_STRING);
        AVG_SPACE NUMBER := FLOOR(SPACE_COUNT / (LENGTH(INPUT_STRING) - 1));
        EXTRA_SPACE NUMBER := MOD(SPACE_COUNT, LENGTH(INPUT_STRING) - 1);
    BEGIN
        -- 각 문자 사이에 공백을 추가합니다.
        FOR I IN 1..LENGTH(INPUT_STRING) LOOP
            OUTPUT_STRING := OUTPUT_STRING || SUBSTR(INPUT_STRING, I, 1);
            IF I != LENGTH(INPUT_STRING) THEN
                OUTPUT_STRING := OUTPUT_STRING || LPAD(' ', AVG_SPACE + 1);
                IF EXTRA_SPACE > 0 THEN
                    OUTPUT_STRING := OUTPUT_STRING || ' ';
                    EXTRA_SPACE := EXTRA_SPACE - 1;
                END IF;
            END IF;
        END LOOP;
    END;
    
    -- 결과를 출력합니다.
    DBMS_OUTPUT.PUT_LINE(OUTPUT_STRING);
    /*
     * 울면서개발하기 10 -> 울  면  서  개 발 하 기
     * 울면서개발하기 20 -> 울    면   서   개   발   하   기
     */
END;