[解決済み] MySQLの<=>という演算子は何ですか?
質問
以前の開発者が書いたコードで作業しているのですが、あるクエリでこう書かれています。
WHERE p.name <=> NULL
とは何ですか?
<=>
このクエリの意味は?と同じ意味なのでしょうか?
=
? それとも構文エラーですか?
しかし、エラーや例外は表示されません。私はすでに
<>
=
!=
で
MySQL
.
解決方法は?
TL;DR
それは
NULL
セーフイコール
演算子を使用します。
通常の
=
演算子では、2 つの値が比較され、その結果は次のいずれかです。
0
(等しくない) または
1
(イコール)、言い換えれば
'a' <=> 'b'
収穫
0
と
'a' <=> 'a'
収量
1
.
とは異なり、通常の
=
演算子の値は
NULL
は特別な意味を持たないので、決して
NULL
を可能な結果であるとしている;だから
'a' <=> NULL
収穫
0
と
NULL <=> NULL
収量
1
.
お役立ち情報
これは、オペランドが両方とも
NULL
で、2つの列の間で一貫した比較結果が必要な場合。
もう一つの使用例は、プリペアド・ステートメントなどでの使用です。
... WHERE col_a <=> ? ...
ここで、プレースホルダにはスカラー値か
NULL
クエリについて何も変更する必要はありません。
関連演算子
その他
<=>
との比較に使用できる演算子は、他に2つあります。
NULL
すなわち
IS NULL
と
IS NOT NULL
これらはANSI標準の一部であり、他のデータベースでもサポートされています。
<=>
は、MySQL 固有のものです。
これらは、MySQL の
<=>
:
'a' IS NULL ==> 'a' <=> NULL
'a' IS NOT NULL ==> NOT('a' <=> NULL)
これを元に、あなたの特定のクエリ(フラグメント)を、よりポータブルなものに変換することができます。
WHERE p.name IS NULL
サポート
SQL:2003 標準では、このための述語が導入され、これは MySQL の
<=>
演算子で、次のような形式です。
IS [NOT] DISTINCT FROM
以下は普遍的に支持されているが、相対的に複雑である。
CASE WHEN (a = b) or (a IS NULL AND b IS NULL)
THEN 1
ELSE 0
END = 1
関連
-
[解決済み] [GROUP BY句に含まれるか、集約関数で使用される必要があります。
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySqlの整数インデックスと文字列インデックスの失敗または暗黙の変換問題
-
MySQLデータベースでvarchar型の数値の大きさを比較する方法
-
MySQLはこのようなUpdateステートメントを書くべきではありません
-
MysqlからElasticsearchにデータを同期させる方法を説明します。
-
Mysqlデータベースへのリンク時にpymysqlがConnection refusedエラーを報告する
-
群関数解の無効な使用
-
CMakeエラー。ソースディレクトリ "/xxx/mysql-5.6.21" に CMakeLists.txt がないようです。
-
[解決済み] なぜ SQLAlchemy の count() は生のクエリよりずっと遅いのでしょうか?
-
[解決済み] MySQLで重複した行を削除する
-
[解決済み] SQLです。文字列が等しくない場合の処理方法