ホームページ データベース mysql チュートリアル MySQL が数値比較で「文字列」を 0 として扱うのはなぜですか?

MySQL が数値比較で「文字列」を 0 として扱うのはなぜですか?

Dec 10, 2024 pm 04:10 PM

Why Does MySQL Treat 'string' as 0 in Numeric Comparisons?

数値比較の癖: MySQL の驚くべき 'string' と 0 の評価

MySQL では、'string' を 0 と比較すると予期しない動作が発生します。 0. 論理的推論は誤った結果を示唆しますが、驚くべきことに真が得られます。この異常は、MySQL が比較中に文字列を数値に自動的にキャストすることに起因します。

文字列が数字で始まる場合、MySQL はそれを数値に変換します。ただし、数値接頭辞のない文字列は 0 として扱われます。したがって、'string' は 0 にキャストされ、0 との真の比較になります。

この動作は、文字列列が 0 と比較される例で明らかです。

select 'string' = 0 as res; -- res = 1 (true)
ログイン後にコピー

In対照的に、他の数値 (整数と小数の両方) との比較では、予想どおり false が返されます:

select 'string' = -12 as res; -- res = 0 (false)
select 'string' = 3131.7 as res; -- res = 0 (false)
ログイン後にコピー

ただし、文字列として '0' を含む文字列の場合、結果は false になります:

select 'string' = '0' as res; -- res = 0 (false)
ログイン後にコピー

変換を強制するには、' ' のような演算子を使用できます:

select '0string' + 0 = 'string' AS res; -- res = 1 (true)
ログイン後にコピー

このクエリは、' 0string' は合計の前に数値に変換されます。続いて、「string」も数値に変換され、数値比較が行われます。

MySQL クエリでの予期しない結果を回避するには、このキャスト動作を理解することが重要です。文字列を数値に明示的に変換する演算子を活用することで、開発者は正確な比較を保証し、潜在的な誤解を避けることができます。

以上がMySQL が数値比較で「文字列」を 0 として扱うのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DockerでのMySQLメモリの使用を減らします DockerでのMySQLメモリの使用を減らします Mar 04, 2025 pm 03:52 PM

DockerでのMySQLメモリの使用を減らします

Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Mar 19, 2025 pm 03:51 PM

Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

mysqlの問題を解決する方法共有ライブラリを開くことができません mysqlの問題を解決する方法共有ライブラリを開くことができません Mar 04, 2025 pm 04:01 PM

mysqlの問題を解決する方法共有ライブラリを開くことができません

sqliteとは何ですか?包括的な概要 sqliteとは何ですか?包括的な概要 Mar 04, 2025 pm 03:55 PM

sqliteとは何ですか?包括的な概要

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし) Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし) Mar 04, 2025 pm 03:54 PM

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド Mar 04, 2025 pm 03:49 PM

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか? 共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか? Mar 18, 2025 pm 12:00 PM

共通の脆弱性(SQLインジェクション、ブルートフォース攻撃)に対してMySQLを保護するにはどうすればよいですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? Mar 18, 2025 pm 12:01 PM

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?

See all articles