PL/SQL - 演算子
こんにちは、将来のプログラマーたち!今日は、PL/SQLの演算子の世界に興味深い旅に出発します。これまで一度もコードを書いたことがない人も心配しないでください。私たちは非常に基本的なところから始めて、少しずつ進んでいきます。このチュートリアルの終わりまでに、プロのようにデータを操作できるようになるでしょう!
算術演算子
まずは馴染みのあるものから始めましょう:数学!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;
この例では、num1
とnum2
という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;
このコードはa
とb
を比較して関係演算子を使用しています。実行すると以下のようになります:
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の演算子の優先順位です(最も高いから最も低い順):
- 累乗 (**)
- 掛け算 (*), 除算 (/)
- 加算 (+), 減算 (-)
- 比較演算子 (=, <>, <, >, <=, >=)
- IS NULL, LIKE, BETWEEN, IN
- NOT
- AND
- 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;
この例では、以下のように評価されます:
- 10 / 2 = 5 (除算、比較)
- 5 > 3 (比較)
- 2 + 2 = 4 (加算、比較)
- NOT (2 + 2 = 4) (論理NOT)
- 5 > 3 AND 10 / 2 = 5 (論理AND)
- 結果のステップ5 OR 結果のステップ4 (論理OR)
このコードを実行すると以下のようになります:
結果は TRUE です
そして、ここまでがPL/SQLの主な演算子です。練習することが完璧を手に入れる鍵です。自分でコードの例を書いて、さまざまな演算子の組み合わせを試してみてください。間もなく、複雑なPL/SQL文を簡単に書けるようになるでしょう!
Credits: Image by storyset