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コマンドの詳細な説明

推薦する

JS ループで async と await を正しく使用する方法

目次概要(ループモード - 共通)配列と非同期メソッドを宣言して反復するforループで使用するマップ...

js を使用して XML オンライン エディターを作成する例

目次序文オンラインXMLエディタの必要性テクノロジー事前調査ビジュアルプログラミングVSCODEプラ...

MySQL ifnull のネスト使用手順

MySQL ifnull のネストされた使用ifnull をネストする方法があるかどうかオンラインで...

Mysql の mysql.user ユーザー テーブルの詳細な説明

MySQL は、異なるユーザーに異なる権限を割り当てることができるマルチユーザー管理データベースであ...

純粋な CSS3 で蝶が羽ばたく様子を再現する例

純粋なCSS3で蝶が羽ばたく様子を再現。まずはその効果をご覧ください どうですか?効果はかなりいいで...

MySQL InnoDB ロック メカニズムの詳細な例

1. InnoDBのロック機構InnoDB ストレージ エンジンは、行レベルのロックとトランザクショ...

MySQL データベースは XA 仕様をどのように実装しますか?

MySQL 一貫性ログMySQL データベースの電源が切れた場合、コミットされていないトランザクシ...

Vueはechartsを使用して組織図を描画します

昨日、円形のプログレスバー (Vue 円形プログレスバーを参照してください) についてブログを書きま...

Dockerコンテナが起動直後に終了する問題を解決する

最近、Docker がコンテナの起動時に特定のプロセスを直接実行できるようにする方法を調べていたとこ...

Flex モバイルレイアウトにおけるシングルラインレイアウトとダブルラインレイアウトの違いと使い方

レイアウトにul>liを使用した単一行レイアウトを以下に示します。 <ul class=...

Expressはログイン認証を実装

この記事では、ログイン認証を実装するためのExpressの具体的なコードを例として紹介します。具体的...

hrefを使用すると、リンクをクリックするだけでページ上の特定の場所にジャンプできます。

ページ内の a タグをクリックした後、ページ内の対応する場所にジャンプするようにします。方法は非常に...

Windows 10 Home EditionにDockerをインストールする方法を教えます

Redisの本やSpring Cloud Alibabaの本を執筆した際に、一部の分散コンポーネント...