Mysql は null 値の first/last メソッドの例を実装します

Mysql は null 値の first/last メソッドの例を実装します

序文

MySQL が SQL SELECT コマンドと WHERE 句を使用してテーブルからデータを読み取ることはすでにわかっていますが、指定されたクエリ条件フィールドが NULL の場合、コマンドが正しく機能しない可能性があります。

この状況に対処するために、MySQL は次の 3 つの主要な演算子を提供します。

  • IS NULL: この演算子は、列の値が NULL の場合に true を返します。
  • IS NOT NULL: 列の値が NULL でない場合に演算子は true を返します。
  • <=>: 比較する両方の値が NULL の場合に true を返す比較演算子 (= 演算子とは異なります)。

NULL に対する条件付き比較演算は特別です。列内の NULL 値を検索する場合、 = NULL または != NULL は使用できません。

MySQL では、NULL 値と他の値 (NULL 値も含む) を比較すると常に false が返されます。つまり、NULL = NULL は false を返します。

MySQL は、IS NULL および IS NOT NULL 演算子を使用して NULL を処理します。

現在、プロジェクトを Oracle から MySQL に移行しています。MySQL にはない Oracle 関数がいくつかあったため、関数をカスタマイズするか、変換のために関数を置き換える方法を見つける必要がありました。

Oracle はデータをソートするときに、null 値を最初または最後に配置するため、nulls first または nulls last を使用する場合があります。

Oracle メソッド:

NULL値が最初にソートされます

select * from A 順序で desc null first

NULL値は最後にソートされます

select * from A order by a desc null last

しかし、MySQLに移行する場合、MySQLでは同様の機能が提供されていないので、どのように実装すればよいのでしょうか。

解決策は次のとおりです。

MySQL の IF 関数と ISNULL 関数を使用して、Null 値は最後にソートされます。空の場合は1を返し、そうでない場合は0を返します。

A から * を選択し、IF(ISNULL(a),1,0),a で並べ替えます。

MySQL の IF 関数と ISNULL 関数を使用して、最初に null 値がソートされます。空の場合は1を返し、そうでない場合は0を返します。

A から * を選択、順序は IF(ISNULL(a),0,1),a desc で決定

mybatis で Oracle および MySQL のバージョンが必要な場合は、バックグラウンドからデータ テーブル バージョン識別子 dbType を渡すか、mybatis の _databaseId メソッドを直接使用することができます。

 <if test="dbType=='oracle'">
   c.create_date desc nulls last で並べ替え
   </if>
   <if test="dbType=='mysql'">
   IF(ISNULL(c.create_date),1,0)、c.create_date desc で並べ替え
   </if>

要約する

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

以下もご興味があるかもしれません:
  • MySQL における NULL 値の理解と使用に関するチュートリアル
  • MySQLのNULL値の詳しい説明
  • MySQL で null 値と空文字 ('''') を区別する
  • MySQL 文字列連結と null 値の設定のためのインスタンス メソッド
  • MySQL NULL値処理例の詳細な説明
  • MySQLの空の値とnull値の違いを知っていますか?
  • この記事ではMySQLのNULLについて説明します。

<<:  VMware 15.5 バージョンのインストール Windows_Server_2008_R2 システム チュートリアル図

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

推薦する

Ubuntu環境でのSSHの詳細なインストールと使用

SSH は Secure Shell の略で、安全な伝送プロトコルです。Ubuntu クライアントは...

マークアップ言語 - テキストの CSS スタイルを指定する

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

vue.js ベースの QQ チャット ルーム

目次導入効果のデモンストレーションは次のとおりです。 MChat コンポーネントのレンダリング: I...

Hadoop 2.Xの新機能、ごみ箱機能の説明

ごみ箱機能をオンにすると、削除されたファイルの元のデータをタイムアウトなしで復元できるため、誤って削...

Nginx サービスを使用してサブドメイン環境を構築し、2D マップの読み込みパフォーマンスを向上させる方法を説明します。

1. 背景最近、友人が大規模なマップの読み込みが遅いという問題に遭遇しました。iServer のパ...

DockerにMySQLをインストールする方法

最近 Django を導入しましたが、MySQL を手動でインストールしたくなかったので、Docke...

HTMLハイパーリンクaタグのhrefジャンプとonclick間の実行順序の例

HTMLハイパーリンクaタグのhrefジャンプとonclickの実行関係htmlのaタグのhrefは...

HTMLは角丸四角形を簡単に実装します

質問: div+css と配置を使用して角丸四角形を実現するにはどうすればよいですか?ソリューション...

Vueでフォームデータを取得する方法

目次必要データを取得して送信するテンプレートフィルターフィルターの使用シナリオ要約する必要Vue を...

MySQL の一般的なツール例の概要 (推奨)

序文この記事では主にMySQLでよく使われるツールに関する関連コンテンツを紹介し、皆さんの参考と学習...

HTMLのimgタグで画像の中心部分だけを表示する方法(3つの方法)

HTML の img タグで画像の中心を表示する方法は、現在 3 つあります。ここで記録しておきま...

検索ナビゲーションバー付きの CSS サンプルコード

この記事では、CSS を使用して検索機能付きのナビゲーション バーを作成する方法を説明します。以下の...

フロントエンド プロジェクトのデフォルトのスクロール バー スタイルを変更する (概要)

スクロールバーのデフォルトスタイルを変更する必要があるプロジェクトを多数作成しましたが、プラグインを...

MySQL インデックスの一般的な問題の概要

Q1: データベースにはどのようなインデックスがありますか?メリットとデメリットは何ですか? 1. ...

Linux mysql5.5 を mysql5.7 にアップグレードする手順と落とし穴

目次Linux MySQL 5.5 が MySQL 5.7 にアップグレードされました1. mysq...