MySql における無効な Null セグメント判定と IFNULL() 失敗の解決策

MySql における無効な Null セグメント判定と IFNULL() 失敗の解決策

MySql Nullフィールド判定とIFNULL失敗処理

ps: (プロセスを表示したくない場合は、SQL の外側に選択を追加するだけです)

select a,b,c from table group by a,b,c //このとき、a,b,cがnullと判定されても問題ありません。select IFNULL(a,0),IFNULL(b,0),IFNULL(3,0) 
from (テーブルから a,b,c を選択し、 a,b,c でグループ化) //これで完了です

この非常にシンプルな表を見てみましょう。

ここに画像の説明を挿入

SQL文を使用してPIDでグループ化し、列を行に変換すると、結果は次のように表示されます。

ここに画像の説明を挿入

IFNULL(SID1,0) や IF( SID1 is null,0,SID1) をどのように表示しても、結果は NULL のままです -.-! 無力感を感じます。

私のSQLはこのように書かれています。MAX関数を使用していない場合は無視してIFNULLだけを見てください。IFNULLを追加したことは明らかです。

選択
			PID、
			MAX(SID = 1 の場合、IFNULL(PNUM ,0) END) AS SID1、
			MAX(SID = 2の場合、IFNULL(PNUM,0)END) AS SID2、
			MAX(SID = 3 の場合、IFNULL(PNUM ,0) END) AS SID3
		から
			(
				選択
					PID、
					SUM(PNUM) PNUM、
					シド
				から
					あ
				グループ化
					ピジョン
			)温度
		グループ化
			温度.PID

しかし、結果はまだ NULL であることに気付きました。次に、IFNULL() が null の場合、対応するフィールドがテーブルに存在し、NULL であることしか判断できないことがわかりましたが、明らかに私のテーブルにはそのようなフィールドがないため、判断できません。

選択後、クエリ内のNULL値はmysqlのis nullおよびIFNULL()では認識されません。

ここまで言っておきましたが、どうやって解決すればいいのでしょうか?

とても簡単です。時計を持っていないなら、ただ買うだけです! (新しいテーブルを作成しますか?) 何を考えていますか?

まず、クエリ内の IFNULL を削除します。効果はありません。

次に、SELECT ステートメントを使用して、結果セットをテーブルとしてクエリします。これは、クエリ対象のテーブルにフィールドが存在し、値が NULL であることに相当します。

選択
	PID、IFNULL(SID1,0) SID1、IFNULL(SID2,0) SID2、IFNULL(SID3,0) SID3
から
	(
		選択
			PID、
			MAX(SID = 1 の場合 PNUM END) AS SID1、
			MAX(SID = 2 の場合 PNUM END) AS SID2、
			MAX(SID = 3 の場合、PNUM END) AS SID3
		から
			(
				選択
					PID、
					SUM(PNUM) PNUM、
					シド
				から
					あ
				グループ化
					ピッド
			)温度
		グループ化
			温度.PID
	) 一時1

ほら、結果が出ましたよハハハハ~

ここに画像の説明を挿入

MySql で IFNULL() を使用する際に発生する問題

ifnull() 関数について

IFNULL(a,b) c

aがnullでない場合、cの値はaである。

aがnullの場合、cの値はbになります。

実際の使用で遭遇した問題

IFNULL(a,b) c

a が null ではなく、空の文字列 ' ' である場合、c の値は空の文字列になります。

実際に望ましい結果は、a が空の文字列または null であり、c の値が b であることです。

解決

代わりにif()関数を使用してください

if(a ='' または a が null,b,a) c

つまり、a が null または空の文字列の場合は c=b、それ以外の場合は c=a になります。

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

以下もご興味があるかもしれません:
  • MySQL IFNULL判定問題の解決方法
  • MySQL の null (IFNULL、COALESCE、NULLIF) に関する知識ポイントのまとめ
  • MySQL で null を置き換える IFNULL() および COALESCE() 関数の詳細な説明
  • MySQL の nvl() 関数に似た ifnull() 関数についての簡単な説明
  • MySql での IFNULL、NULLIF、ISNULL の使用法の詳細な説明
  • SQL Server の ISNULL 関数と MySQL の IFNULL 関数の使用法について簡単に説明します。
  • MySQL の IFNULL、IF、CASE の違いの紹介
  • MySQL ifnull のネスト使用手順

<<:  HTMLを圧縮しない理由はいくつかある

>>:  HTML におけるブロックコメントの使用に関する詳細な紹介

推薦する

jsはタイトルと説明のキーワードを検出し、見つかった場合は置換するか他のページにジャンプします。

キーワード 一般タイトルには、クラック、キー、シリアル番号、キージェネレータなどの単語を含めることは...

Vue 2つのフィールドの共同検証によりパスワード変更機能を実現

目次1. はじめに2. ソリューションの実装2.1 実装コード2.2 コードの説明2.3 検証結果1...

CSS3 で六角形の境界線を実装するサンプルコード

一番外側の boxF は 120 度回転し、2 番目の boxS は -60 度回転し、3 番目の ...

Docker Alpine イメージのタイムゾーン問題に対する完璧な解決策

最近、Docker を使用して Java アプリケーションをデプロイしていたときに、タイムゾーンが間...

Dockerコンテナのタイムゾーン調整操作

Docker コンテナのタイムゾーンがホストマシンと一致しているかどうかを確認するにはどうすればよい...

Vueはel-tree遅延読み込みを使用して、追加、削除、変更、クエリ機能を実装します。

Vue のツリー表示については、プロジェクトが使用されています: エフェクト ダイアグラムがツリー...

Reactは適応性の高い仮想リストを実装する

目次変換前:変換後: 0x0の基本0x1 「固定高さ」の仮想リストを実装する原理:最適化: 0x2 ...

MySql のインデックス、ロック、トランザクションの知識ポイントのまとめ

この記事では、MySql のインデックス、ロック、トランザクションに関する知識のポイントをまとめてい...

Vue の better-scroll コンポーネントを使用して水平スクロール機能を実現する

について最近、Vue を学習する過程で、基本的な知識の練習と強化を目的として、Qunar.com の...

MySQLの日付文字列タイムスタンプ変換の詳細な説明

時刻、文字列、タイムスタンプ間の変換は、日常生活でよく使用されます。よく使用されますが、私は使用する...

Linux コマンド クエリ アプレットでの WePY クラウド開発の実践

みなさんこんにちは。今日は Linux コマンド クエリ アプレットでの WePY クラウド開発の実...

tomcat+nginx を使用してマルチアプリケーション デプロイメントを実装するためのサンプル コード

目次マルチアプリケーションの展開1-Tomcat 構成1.1- プロジェクト構成1.2-サービス構成...

CentOS 7 で yum を使用して MySQL 5.7.20 をインストールする最も簡単な方法

CentOS7 のデフォルトのデータベースは mariadb ですが、mysql を使っている人も多...

ApacheとTomcatを組み合わせて静的状態と動的状態を分離する方法

実験環境ApacheとTomcatは両方ともIPアドレス192.168.153.136のホストにイン...