SQL
 Computer >> コンピューター >  >> プログラミング >> SQL

MySQLのIF()、NULLIF()、およびIFNULL()関数の使用

他のプログラミング言語と同様に、構造化照会言語には、データの流れを制御する条件付きステートメントがあります。 IF関数は、条件が満たされた場合はステートメントを返し、満たされていない場合は別のタイプのステートメント(またはまったくない)を返します。 MySQLを使用したSQLIF関数を見てみましょう。

準備

このSQLFiddleは、名前、年齢、性別を含むサンプルスキーマにリンクしています。これがこの記事で使用するものです。次のスキーマを使用して、独自のIDEにテーブルを作成します。

create table names (
   id INT,
   name VARCHAR(50),
   age INT,
   gender VARCHAR(50)
);
insert into names (id, name, age, gender) values (1, 'Bret Starkings', 55, 'M');
insert into names (id, name, age, gender) values (2, 'Bobbye Eyckel', 76, 'F');
insert into names (id, name, age, gender) values (3, 'Barbie Veschi', 50, 'F');
insert into names (id, name, age, gender) values (4, 'Electra Blazewicz', 47, 'F');
insert into names (id, name, age, gender) values (5, 'Estrella Borleace', 57, 'F');
insert into names (id, name, age, gender) values (6, 'Washington Pittwood', 75, 'M');
insert into names (id, name, age, gender) values (7, 'Phaedra Tertre', 27, 'F');
insert into names (id, name, age, gender) values (8, 'Nicolina Elie', 76, 'F');
insert into names (id, name, age, gender) values (9, 'Hugh Hughson', 86, 'M');
insert into names (id, name, age, gender) values (10, 'Dare Ravilious', 59, 'M');
insert into names (id, name, age, gender) values (11, 'Cad Levins', 13, 'M');
insert into names (id, name, age, gender) values (12, 'Sollie Kimbury', 33, 'M');
insert into names (id, name, age, gender) values (13, 'Elga Rearie', 61, 'F');
insert into names (id, name, age, gender) values (14, 'Cherey Terron', 54, 'F');
insert into names (id, name, age, gender) values (15, 'Abbie Kent', 23, 'F');
insert into names (id, name, age, gender) values (38, 'Nelia Picot', 2, 'F');
insert into names (id, name, age, gender) values (39, 'Benedetto Smithin', 33, 'M');
insert into names (id, name, age, gender) values (40, 'Rickie Maymand', 83, 'F');
insert into names (id, name, age, gender) values (41, 'Kristoforo Dashkov', 6, 'M');
insert into names (id, name, age, gender) values (42, 'Cherice Genty', 6, 'F');
insert into names (id, name, age, gender) values (43, 'Shirley Fake', 95, 'F');
insert into names (id, name, age, gender) values (44, 'Aeriel Plant', 36, 'F');
insert into names (id, name, age, gender) values (45, 'Halimeda Gook', 74, 'F');
insert into names (id, name, age, gender) values (46, 'Minor Harriot', 63, 'M');
insert into names (id, name, age, gender) values (47, 'Greggory Found', 61, 'M');
insert into names (id, name, age, gender) values (48, 'Vivien Braund', 94, 'F');
insert into names (id, name, age, gender) values (49, 'Gaylord Pochet', 96, 'M');
insert into names (id, name, age, gender) values (77, 'Nataline Sealand', 43, 'F')

IF()

IF(expression ,expr_true, expr_false);

MySQLデータベースのIF関数の構文は、IFキーワードを使用し、3つのパラメーターを取ります。関数が評価するブール式、条件がtrueの場合に返されるステートメント、条件がfalseの場合に返されるステートメントです。 。

SELECT name, age, IF(age >= 18, "YES", "NO") AS OVER_18
FROM names;

上記のクエリでは、エントリの名前と年齢を選択してから、OVER_18と呼ばれる条件を選択します。 SQLの部分的な結果を以下に示します(このSQLフィドルで完全な結果を確認できます):

名前 年齢 OVER_18
ブレットスターキング 55 はい
Bobbye Eyckel 76 はい
バービーベスキ 50 はい
Electricla Blazewicz 47 はい
Estrella Borleace 57 はい
ワシントンピットウッド 75 はい
Phaedra Tertre 27 はい
ニコリーナエリー 76 はい
ヒューヒューソン 86 はい
あえてラヴィリオス 59 はい
Cad Levins 13 いいえ

IFNULL()

IFNULL() 最初の式がNULLであるかどうかを尋ねる条件文です。そうである場合は、最初の式ではなく2番目の式を返します。

IFNULL(NULL, 2) ⇒ returns 2
IFNULL(0, 4) ⇒ returns 0

SELECT name, IFNULL(age, "NOT ENTERED") AS age
FROM names;

このMySQLステートメントは、すべてのNULLエントリを文字列「NOTENTERED」で上書きするageという列を返します。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

NULLIF()

NULLIF() 関数に渡される両方の式が等しい場合はNULLを返します。

SELECT name, NULLIF(name, age) AS 
FROM names;

名前と年齢が同じになることはおそらくないので、これは極端な例ですが、少なくとも構文はこのように記述されます。このステートメントブロックが有益である場合を考えられますか?

結論

MySQLには、データの流れを制御できるif関数がいくつかあります。これらの概念は、使用しているデータベースに変換されます。特定のデータベースの構文の詳細については、ドキュメントを確認してください。


  1. ハッシュ関数とハッシュテーブル

    ハッシュは、ハッシュ関数と呼ばれる数学関数を使用して、テキストまたは数値のリストから値を生成するプロセスです。数値の数値または英数字のキーを使用するハッシュ関数は多数あります。さまざまなハッシュ関数を以下に示します。 ハッシュ関数 以下はハッシュ関数の一部です- 除算方法 これは、ハッシュ関数を作成する最も簡単な方法です。ハッシュ関数は次のように記述できます- h(k) = k mod n ここで、h(k)は、キー値kをハッシュテーブルnのサイズで除算して得られるハッシュ値です。キーがより均一に分散されるようにするため、nは素数であることが最善です。 除算法の例は次のとおりです- k=

  2. MacでのPython3のアップグレードと使用

    あなたはあなたの真新しいMacがすべての関連するソフトウェアの最新バージョンを持っていると思うかもしれません。ほとんどのユーザーアプリにとっては正しいでしょうが、基盤となるフレームワークにとっては別の話です。最新の安定版リリースはPython3.5ですが、新しいMacにはPython2.7.10が付属しています。これがバージョン間の大きなギャップのように思われる場合、それはそうだからです。ただし、新しいバージョンが必ずしも優れているとは限りません。Python3はPython 2と下位互換性がなく、ほとんどの開発者は引き続きPython2を使用しています。 2to3か2to3ではないか?