PL/SQL - 文字列:入門者のガイド
こんにちは、未来のPL/SQL魔法使いさんたち!今日は、PL/SQLの文字列の世界に踏み出す興奮的な旅に出ます。これまで一度もコードを書いたことがない方でも心配しないでください - 私があなたの親切なガイドになり、一歩一歩進んでいきます。このチュートリアルの終わりまでに、プロのように文字列を操作できるようになるでしょう!
文字列とは何か?
まず、基本から始めましょう。プログラミングでは、文字列は文字のシーケンスのことを指します。単語、文、または全文節など、キーボードでタイポするどんなテキストでも考えられます。
文字列変数の宣言
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;
この例では:
- 単語の数をスペースの数で数える
- 特定の単語を抽出して大文字にする
- 文中の複数の単語を置換
出力:
単語の数: 9
4番目の単語は: Fox
修正された文: The quick brown cat jumps over the lazy mouse
そして、ここまででPL/SQLの文字列の世界に初めて踏み出しました。練習は完璧を生みますので、これらの関数を試してみて、自分だけの文字列操作の冒険を楽しんでください。
それでは、コードを続け、楽しい文字列操作を続けましょう!
Credits: Image by storyset