case when文のエラー問題の詳細な説明

case when文のエラー問題の詳細な説明

序文

MySQL データベースでは、if else のような判断演算を使用することがあります。では、MySQL でこの要件をどのように処理すればよいのでしょうか?

mysql 判定操作構文:

case ..when 文

しかし、最近使用中に問題が発生しました。以下では多くは述べません。詳細な紹介を見てみましょう。

問題を直接述べます。 ID 番号を格納するテーブル id_card_message があります。テーブル構造とデータは次のとおりです (MySQL 5.7.14):

mysql> id_card_message から * を選択します。

+------+--------------------+

| ID | IDカード番号 |

+------+--------------------+

| 1 | 342513199411222515 |

| 1 | 342624197812023498 |

| 1 | 310908198910123348 |

+------+--------------------+

ここで、ID カード番号の最後から 2 番目の桁に基づいて性別情報を表示したいと思います。次の SQL ステートメントを実行すると、対応するエラーが報告されます。

mysql> ケース substr(id_card_no,17,1) を選択

-> (1,3,5,7,9) の場合、「男」

-> (0,2,4,6,8) の場合、「女」は「セックス」を終了します。

-> IDカード番号

-> id_card_message から;

エラー 1241 (21000): オペランドには 1 列が必要です

エラーには次のように表示されます:オペランドには 1 つの列が含まれている必要があります。ここでの唯一の疑いは、when 節の後の括弧内に値が多すぎることです。この場合、when 構造では、when 節の後には 1 つの値しか出現できないのでしょうか?以下の公式ドキュメントのセクション 13.6.5.1 の case 構文を確認しましたが、これについては説明がないようです。

もちろん、ステートメントの形式を変更することで、必要なデータを取得することもできます。次のように:

mysql>選択

-> ケース

-> substr(id_card_no,17,1) が (1,3,5,7,9) の場合、 '男'

-> substr(id_card_no,17,1) が (0,2,4,6,8) 内にある場合、'女' は 'sex' となります。

-> IDカード番号

-> id_card_message から;

+------+--------------------+

| 性別 | IDカード番号 |

+------+--------------------+

| 男性 | 342623199610222515 |

| 男性 | 342624197812023498 |

| 女性 | 310908198910123348 |

+------+--------------------+

現在の考え方では、「CASE 値 WHEN 比較値」の形式では、when 句の後の比較値は単一の値のみであり、複数の値に接続することはできません。たとえば、上記の比較値には 1、3、5、7、9 という値があります。この場合、上記の SQL のみ使用できます。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • MySQL CASE WHEN ステートメントの使用手順
  • SQL 集計関数で case when then を使用する際のヒント
  • SQL 学習: CASE WHEN THEN ELSE END の使い方
  • MySQLのCASE WHEN文の使用例をいくつか紹介します。
  • MySQL で case when 文を使用して複数条件クエリを実装する方法
  • SQL で case when 構文を使用する方法
  • SQL ステートメントの行と列の変換の 2 つの方法の簡単な分析: ケース... 場合とピボット関数の適用
  • 合計(場合によります)(男子生徒と女子生徒の数を決定する)
  • MySQL のグループ分けの例
  • MySQLソートにおけるCASE WHENの使用例

<<:  Vuex データの永続性を実装するためのアイデアとコード

>>:  Tomcatの自動シャットダウンに関するバグ修正

推薦する

MySQL データベースのインデックス順序の詳細な説明

目次事件の原因解剖学ファイルの並べ替えファイルのソートが非常に遅いのですが、他に解決策はありますか?...

nginx がどのようにして高いパフォーマンスとスケーラビリティを実現するのかを深く理解する

NGINX の全体的なアーキテクチャは、連携して動作する一連のプロセスによって特徴付けられます。メイ...

テーブルタグ(TAGS)の詳細な紹介

テーブルの基本構文<table>...</table> - テーブルを定義し...

Ubuntuがネットワークに接続できない場合の解決策

仮想マシン内の Ubuntu がネットワークに接続できない場合の効果的な解決策: 1. Ubuntu...

webpack イメージを base64 に変換する例

url-loader をダウンロード 糸を追加 -D URLローダー モジュール: { ルール: {...

Vue における $router と $route の違いの詳細な説明

通常、vue プロジェクトではルーティングを使用します。vue-router は vue.js の公...

vue3 統合 API における vue2 の $refs の代替方法についての簡単な説明

vue2 プロジェクト開発の経験があれば、$refs に精通しているでしょう。 vue3 の急激なア...

MySQL データを誤って削除した場合の簡単な解決策 (MySQL フラッシュバック ツール)

概要Binlog2sql は、Python で開発されたオープンソースの MySQL Binlog ...

MySQLがフルテーブルスキャンを実行するいくつかの状況

目次ケース1:ケース2:ケース3:簡単にまとめると:過去 2 日間で、完全なテーブル スキャンを引き...

ReactのsetStateがマクロタスクなのかマイクロタスクなのかについて詳しく話しましょう

目次序文面接官は適切な質問をしていますか? § React は setState をどのように制御し...

Reactマウスの複数選択機能の設定方法

一般的に、リストには選択機能があり、単一選択、二重選択、複数選択が非常に一般的です。カスタム ループ...

jsはシンプルなカウントダウンを実装します

この記事の例では、参考までに簡単なカウントダウンを実装するためのjsの具体的なコードを共有しています...

MySQL におけるデフォルトの使用法の詳細な説明

NULL および NOT NULL 修飾子、DEFAULT 修飾子、AUTO_INCREMENT 修...

MySQL 8.0 の新機能 - 管理ポートの使用の概要

目次序文接続管理追加の接続管理ポート要約する序文皆さんの多くは、次のようなエラー メッセージに遭遇し...

ラベルタグを使用してテキストをクリックしてラジオボタンを選択します

<label> タグは、入力要素のラベル (タグ) を定義します。ラベル要素はユーザーに...