PL/SQL - 演算子

こんにちは、将来のプログラマーたち!今日は、PL/SQLの演算子の世界に興味深い旅に出発します。これまで一度もコードを書いたことがない人も心配しないでください。私たちは非常に基本的なところから始めて、少しずつ進んでいきます。このチュートリアルの終わりまでに、プロのようにデータを操作できるようになるでしょう!

PL/SQL - Operators

算術演算子

まずは馴染みのあるものから始めましょう:数学!PL/SQLの算術演算子は学校で学んだものと同じように動作します。これにより、数値に基本的な数学的な操作を行うことができます。

以下はPL/SQLの算術演算子の表です:

演算子 説明
+ 加算 5 + 3 = 8
- 減算 10 - 4 = 6
* 掛け算 3 * 4 = 12
/ 除算 15 / 3 = 5
** 累乗 2 ** 3 = 8

以下のコード例でこれらの演算子を見てみましょう:

DECLARE
num1 NUMBER := 10;
num2 NUMBER := 5;
result NUMBER;
BEGIN
result := num1 + num2;
DBMS_OUTPUT.PUT_LINE('加算: ' || result);

result := num1 - num2;
DBMS_OUTPUT.PUT_LINE('減算: ' || result);

result := num1 * num2;
DBMS_OUTPUT.PUT_LINE('掛け算: ' || result);

result := num1 / num2;
DBMS_OUTPUT.PUT_LINE('除算: ' || result);

result := num1 ** 2;
DBMS_OUTPUT.PUT_LINE('累乗: ' || result);
END;

この例では、num1num2という2つの変数を宣言し、さまざまな算術操作を行います。その結果を出力に表示します。

このコードを実行すると以下のようになります:

加算: 15
減算: 5
掛け算: 50
除算: 2
累乗: 100

関係演算子

次に関係演算子に進みましょう。これらは2つの値を比較し、それらの間の関係を判断するために使用されます。これは、「これはそれよりも大きいですか?」や「これらの2つは同じですか?」这样的質問に答えるときに使います。

以下はPL/SQLの関係演算子の表です:

演算子 説明
= 等しい 5 = 5 is true
<> 等しくない 5 <> 3 is true
< 小于 3 < 5 is true
> 大于 5 > 3 is true
<= 小于または等しい 3 <= 3 is true
>= 大于または等しい 5 >= 5 is true

以下でこれらを見てみましょう:

DECLARE
a NUMBER := 10;
b NUMBER := 20;
BEGIN
IF a = b THEN
DBMS_OUTPUT.PUT_LINE('a は b に等しい');
ELSIF a < b THEN
DBMS_OUTPUT.PUT_LINE('a は b より小さい');
ELSE
DBMS_OUTPUT.PUT_LINE('a は b より大きい');
END IF;

IF a <> b THEN
DBMS_OUTPUT.PUT_LINE('a は b と等しくない');
END IF;
END;

このコードはabを比較して関係演算子を使用しています。実行すると以下のようになります:

a は b より小さい
a は b と等しくない

比較演算子

PL/SQLの比較演算子は関係演算子に非常に似ていますが、NULL値をチェックしたり、異なるデータ型間で比較を行うなどの追加機能があります。

以下は比較演算子の表です:

演算子 説明
IS NULL 値が NULL かどうかをチェック
IS NOT NULL 値が NULL でないかどうかをチェック
LIKE パターン一致
BETWEEN 値が範囲内かどうかをチェック
IN 値がリスト内のいずれかの値と一致するかどうか

以下の例を見てみましょう:

DECLARE
name VARCHAR2(20) := 'John Doe';
age NUMBER := 25;
BEGIN
IF name IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE('名前は: ' || name);
END IF;

IF name LIKE 'J%' THEN
DBMS_OUTPUT.PUT_LINE('名前は J で始まる');
END IF;

IF age BETWEEN 20 AND 30 THEN
DBMS_OUTPUT.PUT_LINE('年齢は20から30の間です');
END IF;

IF age IN (25, 30, 35) THEN
DBMS_OUTPUT.PUT_LINE('年齢は25、30、35のいずれかです');
END IF;
END;

このコードはさまざまな比較演算子を使用しています。実行すると以下のようになります:

名前は: John Doe
名前は J で始まる
年齢は20から30の間です
年齢は25、30、35のいずれかです

論理演算子

論理演算子は、複数の条件を結合するために使用されます。これは、日常の言葉で複雑な状況を説明する際の「かつ」や「または」と同じです。

以下は論理演算子の表です:

演算子 説明
AND 両方の条件が真の時に真
OR いずれかの条件が真の時に真
NOT 条件の結果を反転

以下でこれらを見てみましょう:

DECLARE
age NUMBER := 25;
has_license BOOLEAN := TRUE;
BEGIN
IF age >= 18 AND has_license THEN
DBMS_OUTPUT.PUT_LINE('あなたは車を運転できます');
END IF;

IF age < 18 OR NOT has_license THEN
DBMS_OUTPUT.PUT_LINE('あなたは車を運転できません');
ELSE
DBMS_OUTPUT.PUT_LINE('あなたは車を運転できます');
END IF;
END;

このコードは年齢と運転免許の有無に基づいて運転可能かどうかをチェックしています。実行すると以下のようになります:

あなたは車を運転できます
あなたは車を運転できます

PL/SQLの演算子優先順位

数学と同様に、PL/SQLの演算子も評価される順序があります。これを理解することは、正確で予測可能なコードを書くために非常に重要です。

以下はPL/SQLの演算子の優先順位です(最も高いから最も低い順):

  1. 累乗 (**)
  2. 掛け算 (*), 除算 (/)
  3. 加算 (+), 減算 (-)
  4. 比較演算子 (=, <>, <, >, <=, >=)
  5. IS NULL, LIKE, BETWEEN, IN
  6. NOT
  7. AND
  8. OR

以下の例でこれがどのように動作するかを見てみましょう:

DECLARE
result BOOLEAN;
BEGIN
result := 5 > 3 AND 10 / 2 = 5 OR NOT (2 + 2 = 4);

IF result THEN
DBMS_OUTPUT.PUT_LINE('結果は TRUE です');
ELSE
DBMS_OUTPUT.PUT_LINE('結果は FALSE です');
END IF;
END;

この例では、以下のように評価されます:

  1. 10 / 2 = 5 (除算、比較)
  2. 5 > 3 (比較)
  3. 2 + 2 = 4 (加算、比較)
  4. NOT (2 + 2 = 4) (論理NOT)
  5. 5 > 3 AND 10 / 2 = 5 (論理AND)
  6. 結果のステップ5 OR 結果のステップ4 (論理OR)

このコードを実行すると以下のようになります:

結果は TRUE です

そして、ここまでがPL/SQLの主な演算子です。練習することが完璧を手に入れる鍵です。自分でコードの例を書いて、さまざまな演算子の組み合わせを試してみてください。間もなく、複雑なPL/SQL文を簡単に書けるようになるでしょう!

Credits: Image by storyset