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);
END;

この例では:

  • DECLAREキーワードを使用して変数宣言を開始します。
  • my_nameは私たちの変数名です。
  • VARCHAR2(50)は、最大50文字を保持できる可変長の文字列を意味します。
  • :=は代入演算子で、等号のようなものです。
  • 'John Doe'はmy_nameに初期値を割り当てます。

このコードを実行すると、出力は「私の名前は: 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);
END;

これは以下の出力を生成します:「フルネーム: 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('元のテキスト: ' || 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;

このコードの出力は以下の通りです:

元のテキスト:   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('単語の数: ' || 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('4番目の単語は: ' || v_word);

-- 'fox'を'cat'に、'dog'を'mouse'に置換
v_sentence := REPLACE(REPLACE(v_sentence, 'fox', 'cat'), 'dog', 'mouse');
DBMS_OUTPUT.PUT_LINE('修正された文: ' || v_sentence);
END;

この例では:

  1. 単語の数をスペースの数で数える
  2. 特定の単語を抽出して大文字にする
  3. 文中の複数の単語を置換

出力:

単語の数: 9
4番目の単語は: Fox
修正された文: The quick brown cat jumps over the lazy mouse

そして、ここまででPL/SQLの文字列の世界に初めて踏み出しました。練習は完璧を生みますので、これらの関数を試してみて、自分だけの文字列操作の冒険を楽しんでください。

それでは、コードを続け、楽しい文字列操作を続けましょう!

Credits: Image by storyset