mysqlは2つ以上のフィールドがNULLであるレコードを見つける問題を解決します

mysqlは2つ以上のフィールドがNULLであるレコードを見つける問題を解決します

コアコード

/*--------------------------------
2つ以上のフィールドがNULLであるレコードt1を検索します。
id、id1、id2、id3、id4、id5、id6
t1 テーブルにはフィールドがあります。
ここで、id は主キーです。
1 つ以上のフィールドが NULL であるレコード ID を印刷するにはどうすればよいでしょうか?
さらに、保存プロセス中にレコードを 1 つずつ順番に読み取る最も便利な方法は何ですか?
注: 主キー ID には順序がなく、文字列になる場合もあります。
-----------------------------------------*/
存在する場合はテーブル t1 を削除します。
テーブル t1(id int、id1 int、id2 int、id3 int、id4 int、id5 int、id6 int) を作成します。
挿入t1選択
1,1,1,1,1,null,null 結合 すべて選択 
2、null、null、null、1、2、3 結合すべて選択 
3,1,2,3,4,5,6 すべて結合選択 
4,1,2,3,4,5,null 結合すべて選択 
5、null、3、4、null、null、null ;
区切り文字 $$
プロシージャ usp_c_null() を作成する
始める 
n_c int を宣言します。
idd int を宣言します。
curカーソルを宣言する 
id を選択し、case char_length(concat(ifnull(id1,'@'),ifnull(id2,'@'),ifnull(id3,'@'),ifnull(id4,'@'),ifnull(id5,'@'),ifnull(id6,'@')))
- char_length(replace(concat(ifnull(id1,'@'),ifnull(id2,'@'),ifnull(id3,'@'),ifnull(id4,'@'),ifnull(id5,'@'),ifnull(id6,'@')),'@','') )
 6 の場合、6、5 の場合、5、4 の場合、4、3 の場合、3、2 の場合、2、1 の場合、1、それ以外の場合は 0、t1 から c として終了。
見つからない close cur の終了ハンドラを宣言します。
オープンカー;
繰り返す 
cur を idd,n_c にフェッチします。
n_c>=2の場合
id=idd の場合、t1 から * を選択します。
終了の場合;
0 まで繰り返します。
クローズカー;
終わり ;
$$
区切り文字 ;
/*
+------+------+------+------+------+------+------+
| id | id1 | id2 | id3 | id4 | id5 | id6 |
+------+------+------+------+------+------+------+
| 1 | 1 | 1 | 1 | 1 | NULL | NULL |
+------+------+------+------+------+------+------+
セット内の1行(0.10秒)
+------+------+------+------+------+------+------+
| id | id1 | id2 | id3 | id4 | id5 | id6 |
+------+------+------+------+------+------+------+
| 2 | NULL | NULL | NULL | 1 | 2 | 3 |
+------+------+------+------+------+------+------+
セット内1列(0.14秒)
+------+------+------+------+------+------+------+
| id | id1 | id2 | id3 | id4 | id5 | id6 |
+------+------+------+------+------+------+------+
| 5 | NULL | 3 | 4 | NULL | NULL | NULL |
+------+------+------+------+------+------+------+
セット内1列(0.17秒)
*/

以下もご興味があるかもしれません:
  • MySQL フィールドで NOT NULL を使用する必要があるのはなぜですか?
  • MySQL の null 可能フィールドは NULL に設定する必要がありますか、それとも NOT NULL に設定する必要がありますか?
  • MySQL クエリの空のフィールドまたは空でないフィールド (null または null ではない)
  • MySQLフィールド定義でnullを使用しない理由の分析

<<:  JavaScript の for ループと二重 for ループの詳細な説明

>>:  一般的なDocker Composeコマンドの詳細な説明

推薦する

Vue Notepadの例の詳細な説明

この記事の例では、メモ帳機能を実装するためのVueの具体的なコードを参考までに共有しています。具体的...

MySQL グラフィカル管理ツール Navicat のインストール手順

目次序文1. 全員にインストールパッケージを用意する2. Navicatをインストールし、Navic...

Dockerでの接続例外中のエラーを解決する

Docker を初めて使い始めると、通常とは異なる問題に遭遇して、必然的に混乱してしまいます。大丈夫...

TypeScript インターフェース定義ケースチュートリアル

インターフェースの役割:インターフェース (英語: interface) の機能は、簡単に言えば、コ...

dockerエラーの原因分析 終了しました (1) 4分前

Dockerエラー1. 原因を確認するdocker ログ ネクサス2. エラーの原因OpenJDK ...

見落としがちなMySQLのCOLLATIONの例の詳細な説明

序文MySQL データベースの文字列型は、CHAR、VARCHAR、BINARY、BLOB、TEXT...

MySQLカバーインデックスの詳しい説明

コンセプトインデックスにクエリ要件を満たすすべてのデータが含まれている場合、それはカバーリング イン...

Nginx ベースのアクセス制御と接続制限の実装

序文Nginxの組み込みモジュールは、同時リクエスト数の制限とリクエストのソースの制限をサポートして...

複数の値を返す MySQL ストアド プロシージャ メソッドの例

この記事では、例を使用して、MySQL ストアド プロシージャで複数の値を返す方法について説明します...

Linuxのlocateコマンドの使い方

01. コマンドの概要実際には、locate コマンドは find -name の別の書き方ですが、...

vue3 の setUp とリアクティブ関数の使用方法の詳細な説明

1. いつsetUpを実行するかvue3 ではメソッドを正常に使用できるようになったことは誰もが知っ...

Linux でハイパースレッディング技術を動的に有効/無効にする方法の詳細な説明

序文Intel のハイパースレッディング テクノロジーにより、1 つの物理コア上で 2 つのスレッド...

div間のギャップの解決策

HTMLのdivブロックを使用していて、ブロックの中央をしっかりと接続できず、解決できない場合1. ...

MySQL の重要なログファイルの包括的なインベントリ

目次導入ログ分類パラメータファイルエラーログファイル完全なログファイルスロークエリログバイナリログフ...

VMware 仮想マシンに Centos7.3 をインストールするチュートリアル図

VMware の準備 CentOS の準備、こちらは CentOS 7.3 CentOS-7-x86...