MySql の null 関数の使用の共有

MySql の null 関数の使用の共有

MySql の null に関する関数

IFNULL

ISNULL

NULLIF

IFNULL

使用法: IFNULL(expr1,expr2)

説明: expr1 が null でない場合は expr1 を返し、そうでない場合は expr2 を返します。

例:

SQL文結果
SELECT IFNULL(null,'最初のパラメータはnullです') 「最初のパラメータは null です」
SELECT IFNULL('最初のパラメータは null ではありません', '私は 2 番目のパラメータです') 「最初のパラメータは null ではありません」

NULL です

使用法: ISNULL(expr)

説明: expr が null の場合は 1 を返し、それ以外の場合は 0 を返します。

例:

SQL文結果
SELECT ISNULL(null) 1
SELECT ISNULL('NULLではないパラメータ') 0

NULLIF

使用法: NULLIF(expr1,expr2)

説明: expr1 が expr2 と等しい場合は null を返します。それ以外の場合は exp1 を返します。 CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END に似ています。

例:

SQL文結果
NULLIF(1,1)を選択しますヌル
NULLIF(1,2)を選択します1

MySql 関数 IFNULL の使用に関する注意事項

まず、SQL文操作用の簡単なテーブルを作成します。

テーブル作成ステートメントは次のとおりです。

テーブル「学生」を作成(
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主キー' ,
`name` varchar(8) 文字セット utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT 'Name' ,
`score` int(4) NOT NULL DEFAULT 0 COMMENT 'score' ,
主キー (`id`)
);

次のように手動でデータを作成します。

さて、本題に入りましょう。

a. IFNULL の機能は何ですか?以下は、単純な SQL ステートメントと結果です。IFNULL(a,b) の場合、a が受け取った値が null であれば b が返され、それ以外の場合は a が返されます。

IFNULL(NULL,0)を選択します。

b. 次の SQL ステートメントの結果を予測できます。IFNULL 関数の機能によれば、0 を返すはずですが、結果はこのようになりません。

SELECT IFNULL(score,0) FROM student WHERE ID = 4;

返された結果は null であり、期待される結果 0 と一致しません。

c. 次のステートメントは正しい結果 0 を返します。

SELECT IFNULL((SELECT score FROM student WHERE ID = 4),0);

要約:

方法 b を使用して IFNULL、SUM 関数などを使用する場合は、クエリ レコードが存在することを確認する必要があります。存在しない場合は、null 値が返されます。もちろん、方法 c を使用して、null 値が返されることを回避し、プログラムで NPE 例外を回避することもできます。

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL プロセス制御 IF()、IFNULL()、NULLIF()、ISNULL() 関数
  • この記事ではMySQLのNULLについて説明します。
  • MySQL の NULL 値に関する体験談と分析チュートリアルシリーズ
  • mysql IS NULL インデックスケースの説明を使用する
  • MySQLでディスクにNULL値を保存する

<<:  Firefox ブラウザでバックグラウンド ミュージックを再生するための究極のソリューション (Chrome マルチブラウザ対応)

>>:  grpc のリバース プロキシとして nginx を使用する場合の落とし穴の概要

推薦する

Ubuntu 20.04でルートアカウントを有効にする方法

Ubuntu 20.04 をインストールした後、デフォルトでは root アカウントのログイン権限が...

win10にUbuntu18デュアルシステムをインストールするとmmx64.efiが見つからないという問題が発生する

Ubuntu 18のインストール中に、USBディスクからUbuntuのインストールを開始すると、mm...

フロントエンドとバックエンド分離プロジェクトのDockerデプロイメントの実装例

目次1. 環境整備2. イメージを実行する問題を解決するRedis のインストールNginx のイン...

JavaScript にはすでに Object があるのに、なぜ Map が必要なのでしょうか?

目次1. オブジェクトをマップとして扱わない1. 未定義のプロパティはプロトタイプチェーンを通じてア...

MySQL のマスター スレーブ レプリケーション オプションをオンラインで変更する方法

序文: MySQL で最も一般的に使用されるアーキテクチャは、マスター スレーブ レプリケーションで...

MySQLはランダムに一定数のレコードを抽出します

以前は、このような使用シナリオを処理するために rand() で直接 order していましたが、効...

nginx.conf のルートディレクトリ設定の詳細な説明

nginx.conf を構成するときには常に何らかの問題が発生します。ここでは、よくある問題とその解...

Linux システムでの nginx サーバーのインストールと負荷分散構成の詳細な説明

nginx (エンジン x) は、高性能な HTTP およびリバース プロキシ サーバー、メール プ...

カルーセルカルーセルケースのJS実装

この記事の例では、カルーセルカルーセルを実装するためのJSの具体的なコードを参考までに共有しています...

JavaScriptを使用して独自のAjax関数を定義する

ネイティブJSによって開始されたネットワークリクエストは、クエリ文字列の形でサーバーに送信されるため...

レスポンシブWebデザイン学習(2) — 動画をレスポンシブにすることはできるのか?

前回のエピソードレビュー:昨日は、ページがさまざまなデバイス サイズにどのように対応するかについて説...

VMware で Centos7 ブリッジ ネットワークを構成する手順の詳細な説明

VMware仮想マシンでのCentos7ブリッジネットワーク構成の完全な手順は参考用です。具体的な内...

JavaScriptでよく使われる配列重複排除実戦ソースコード

アレイの重複排除は、通常、就職面接中に遭遇し、アレイの重複排除方法のコードを手動で記述することが求め...

Vueプロジェクトでよく使われる実践的なスキルのまとめ

目次序文1. マルチレベルのデータとイベントの配信には$attrsと$listenersを使用する2...

Docker Compose を使用して ELK を迅速にデプロイする (テスト済みで効果的)

目次1. 概要1.1 定義1.2 機能説明2. ELKを展開する2.1 ディレクトリとファイルを作成...