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 を使用する場合の落とし穴の概要

推薦する

VUEはタイムライン再生コンポーネントを実装します

この記事の例では、タイムライン再生コンポーネントを実装するためのVUEの具体的なコードを参考までに共...

Vueバスの簡単な使い方

Vueバスの簡単な使い方シナリオの説明:コンポーネント A にはコンポーネント B と C が含まれ...

CSSで半透明の背景色を実現する2つの方法について簡単に説明します。

ページをレイアウトする際、ユーザーに異なる視覚効果を与えるために、div の背景色を半透明の状態に設...

WeChatアプレットコンポーネントライフサイクルの落とし穴の記録

通常、コンポーネントのライフサイクルは、ビジネス ロジックが始まる場所です。ビジネスシナリオが複雑で...

フロントエンドの上級者向けコースでは、JavaScript のストレージ機能の使い方を学習します。

目次序文背景実施計画の考え方js ストレージ機能ソリューション設計やっと要約する序文どの SaaS ...

VUE+SpringBootはページング機能を実装します

この記事では主に、Vue + SpringBoot でページ分割されたリストデータを実装する方法を紹...

Vueは開始時間と終了時間の範囲クエリを実装します

この記事では、Vueで開始時間と終了時間の範囲を照会する方法を参考までに紹介します。具体的な内容は次...

CSS変数を使用してダークモードを実装するためのサンプルコード

最近、WeChatはAppleによってダークモードの開発を強制されました。ますます多くのウェブサイト...

Meituan DBデータをデータウェアハウスに同期するアーキテクチャと実践

背景データ ウェアハウス モデリングでは、何ら処理されていない元のビジネス レイヤー データは OD...

Docker イメージのデフォルトの保存場所を変更する方法 (ソリューション)

システムの初期のパーティション分割により、オペレーティング システム内の対応する / パーティション...

...

CentOS 7.6 仮想ネットワーク カードのバッチ追加、変更、削除操作の紹介

1 カーネルにtunモジュールがあるかどうかを確認する modinfo tun modprobe t...

HTML 特殊文字変換表

キャラクター小数点文字番号エンティティ名---未使用空間---スペースバー! ! ---感嘆符「 」...

Centos7 で mysqldump を使用して MySQL データベースの毎日の自動バックアップを作成する

1. 要件:データベースのバックアップは、実稼働環境にとって特に重要です。データベースのバックアップ...