PL/SQL - 문자열: 초보자 가이드
안녕하세요, 미래의 PL/SQL 마법사 여러분! 오늘 우리는 PL/SQL의 문자열 세계로 흥미로운 여정을 떠납니다. 코드를 한 줄도 작성해 본 적이 없더라도 걱정하지 마세요 - 저는 친절한 안내자가 되어, 단계별로 함께 진행할 것입니다. 이 튜토리얼의 끝을 맺을 때쯤에는 프로처럼 문자열을 조작할 수 있을 것입니다!
문자열이란?
먼저 기본 개념부터 알아보겠습니다. 프로그래밍에서 문자열은 단순히 문자의序列입니다. 이는 단어, 문장, 심지어는 전체 문단일 수 있습니다. 키보드로 입력할 수 있는 어떤 텍스트라면 모두 문자열입니다.
문자열 변수 선언
PL/SQL에서는 변수를 사용하기 전에 선언해야 합니다. 대화를 시작하기 전에 자신을 소개하는 것처럼 - 예의가 좋습니다!
기본 문자열 선언
가장 간단한 방법으로 문자열 변수를 선언해 보겠습니다:
DECLARE
my_name VARCHAR2(50) := 'John Doe';
BEGIN
DBMS_OUTPUT.PUT_LINE('My name is: ' || my_name);
END;
이 예제에서:
-
DECLARE
키워드를 사용하여 변수 선언을 시작합니다. -
my_name
은 우리의 변수 이름입니다. -
VARCHAR2(50)
은 최대 50자를 저장할 수 있는 가변 길이 문자열입니다. -
:=
는 대입 연산자로, 등호(=
)와 유사합니다. - 'John Doe'는
my_name
에 할당할 초기 값입니다.
이 코드를 실행하면 출력은 "My name is: John Doe"입니다.
다양한 문자열 타입 사용
PL/SQL은 여러 가지 문자열 타입을 제공합니다. 몇 가지를 살펴보겠습니다:
DECLARE
v_varchar2 VARCHAR2(20) := 'Hello, World!';
v_char CHAR(10) := 'Fixed ';
v_long LONG := 'This is a long string that can store up to 32,760 characters';
BEGIN
DBMS_OUTPUT.PUT_LINE('VARCHAR2: ' || v_varchar2);
DBMS_OUTPUT.PUT_LINE('CHAR: ' || v_char);
DBMS_OUTPUT.PUT_LINE('LONG: ' || v_long);
END;
이제 무엇이 일어나고 있는지 설명하겠습니다:
-
VARCHAR2
는 가변 길이 문자열을 저장합니다. -
CHAR
는 고정 길이 문자열로, 추가 공간을 띄워 채웁니다. -
LONG
는 매우 긴 문자열을 저장할 수 있지만, 일부 연산에서는 덜 유연합니다.
PL/SQL 문자열 함수와 연산자
이제 문자열을 선언하는 방법을 알고 있으므로, 이제 약간의乐趣을 느껴보겠습니다!
결합(Concatenation)
결합은 문자열을 함께 이어붙이는 복잡한 단어입니다. PL/SQL에서는 ||
연산자를 사용합니다:
DECLARE
first_name VARCHAR2(20) := 'Jane';
last_name VARCHAR2(20) := 'Smith';
full_name VARCHAR2(41);
BEGIN
full_name := first_name || ' ' || last_name;
DBMS_OUTPUT.PUT_LINE('Full name: ' || full_name);
END;
이는 다음과 같은 출력을 생성합니다: "Full name: Jane Smith"
문자열 함수
PL/SQL은 문자열을 조작할 수 있는 내장 함수를 제공합니다. 몇 가지 유용한 함수를 탐구해 보겠습니다:
함수 | 설명 | 예제 |
---|---|---|
UPPER | 문자열을 대문자로 변환 | UPPER('hello')는 'HELLO'를 반환합니다 |
LOWER | 문자열을 소문자로 변환 | LOWER('WORLD')는 'world'를 반환합니다 |
INITCAP | 각 단어의 첫 글자를 대문자로 변환 | INITCAP('john doe')는 'John Doe'를 반환합니다 |
LENGTH | 문자열의 길이를 반환 | LENGTH('OpenAI')는 6을 반환합니다 |
SUBSTR | 문자열의 일부를 추출 | SUBSTR('HelloWorld', 1, 5)는 'Hello'를 반환합니다 |
TRIM | 시작/끝에 지정된 문자를 제거 | TRIM(' Hello ')는 'Hello'를 반환합니다 |
REPLACE | 모든 문자열의 발생을 교체 | REPLACE('JACK and JILL','J','BL')는 'BLACK and BLILL'을 반환합니다 |
이제 이 함수들을 실제로 사용해 보겠습니다:
DECLARE
v_string VARCHAR2(50) := ' hello, world! ';
BEGIN
DBMS_OUTPUT.PUT_LINE('Original: ' || v_string);
DBMS_OUTPUT.PUT_LINE('UPPER: ' || UPPER(v_string));
DBMS_OUTPUT.PUT_LINE('LOWER: ' || LOWER(v_string));
DBMS_OUTPUT.PUT_LINE('INITCAP: ' || INITCAP(v_string));
DBMS_OUTPUT.PUT_LINE('LENGTH: ' || LENGTH(v_string));
DBMS_OUTPUT.PUT_LINE('SUBSTR: ' || SUBSTR(v_string, 3, 5));
DBMS_OUTPUT.PUT_LINE('TRIM: ' || TRIM(v_string));
DBMS_OUTPUT.PUT_LINE('REPLACE: ' || REPLACE(v_string, 'o', '0'));
END;
이 코드는 다음과 같은 출력을 생성합니다:
Original: hello, world!
UPPER: HELLO, WORLD!
LOWER: hello, world!
INITCAP: Hello, World!
LENGTH: 16
SUBSTR: hello
TRIM: hello, world!
REPLACE: hell0, w0rld!
모든 것을 통합
이제 우리가 배운 것을 더 복잡한 예제로 통합해 보겠습니다:
DECLARE
v_sentence VARCHAR2(100) := 'The quick brown fox jumps over the lazy dog';
v_word VARCHAR2(20);
v_count NUMBER;
BEGIN
-- 단어의 수를 계산
v_count := LENGTH(v_sentence) - LENGTH(REPLACE(v_sentence, ' ', '')) + 1;
DBMS_OUTPUT.PUT_LINE('Number of words: ' || v_count);
-- 4번째 단어를 추출하고 대문자로 변환
v_word := INITCAP(SUBSTR(v_sentence,
INSTR(v_sentence, ' ', 1, 3) + 1,
INSTR(v_sentence, ' ', 1, 4) - INSTR(v_sentence, ' ', 1, 3) - 1));
DBMS_OUTPUT.PUT_LINE('The 4th word is: ' || v_word);
-- 'fox'를 'cat'으로, 'dog'를 'mouse'로 변경
v_sentence := REPLACE(REPLACE(v_sentence, 'fox', 'cat'), 'dog', 'mouse');
DBMS_OUTPUT.PUT_LINE('Modified sentence: ' || v_sentence);
END;
이 예제는 다음을 보여줍니다:
- 단어 수를 계산하는 방법
- 특정 단어를 추출하고 대문자로 변환하는 방법
- 문장에서 여러 단어를 교체하는 방법
출력:
Number of words: 9
The 4th word is: Fox
Modified sentence: The quick brown cat jumps over the lazy mouse
이제 PL/SQL 문자열의 fascinative 세계에 첫 걸음을 내디디셨습니다. 연습이 완벽을 만드는 것을 기억하세요, 그러니 이 함수들을 실험하고 자신만의 문자열 조작 모험을 만들어 보세요.
빨리 코드를 작성하고, 즐겁게 문자열을 던지세요!
Credits: Image by storyset