PL/SQL - 문자열: 초보자 가이드

안녕하세요, 미래의 PL/SQL 마법사 여러분! 오늘 우리는 PL/SQL의 문자열 세계로 흥미로운 여정을 떠납니다. 코드를 한 줄도 작성해 본 적이 없더라도 걱정하지 마세요 - 저는 친절한 안내자가 되어, 단계별로 함께 진행할 것입니다. 이 튜토리얼의 끝을 맺을 때쯤에는 프로처럼 문자열을 조작할 수 있을 것입니다!

PL/SQL - Strings

문자열이란?

먼저 기본 개념부터 알아보겠습니다. 프로그래밍에서 문자열은 단순히 문자의序列입니다. 이는 단어, 문장, 심지어는 전체 문단일 수 있습니다. 키보드로 입력할 수 있는 어떤 텍스트라면 모두 문자열입니다.

문자열 변수 선언

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;

이 예제는 다음을 보여줍니다:

  1. 단어 수를 계산하는 방법
  2. 특정 단어를 추출하고 대문자로 변환하는 방법
  3. 문장에서 여러 단어를 교체하는 방법

출력:

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