ホームページ >データベース >mysql チュートリアル >MySQL が固有フィールドの末尾のスペースを無視するのはなぜですか?

MySQL が固有フィールドの末尾のスペースを無視するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-31 21:12:29384ブラウズ

Why Is MySQL Ignoring Trailing Spaces in Unique Fields?

一意のフィールドの末尾のスペースを無視する MySQL データベース

MySQL で一意のフィールドを持つデータベースを作成する場合、値の先頭または末尾にスペースが含まれることが期待されますスペースは別個のものとして扱う必要があります。ただし、挿入中に末尾のスペースが切り取られ、さまざまな末尾の空白を含む単語を挿入しようとすると重複値エラーが発生することが観察されています。

根本的な問題は、末尾の空白を無視する MySQL のデフォルトの文字列比較動作にあります。その結果、UNIQUE インデックスは標準の文字列比較を使用し、末尾の空白を無視し、文字の等価性に基づいて挿入を拒否することになります。

この問題を解決するには、値を VARBINARY として保存する方法が 1 つあります。これにより、スペースが保持され、末尾の空白を考慮した一意のインデックスの作成。さまざまなスペースを含む値を保存できますが、これらの値による並べ替えでは期待した結果が得られない可能性があることに注意することが重要です。

代替ソリューションは、MySQL 8.0 で導入された MySQL の NO PAD 照合順序を利用することです。 。 utf8mb4_0900_ai_ci などのこれらの照合順序は、末尾のスペースを無視せずに文字列比較を処理します。 NO PAD 照合を使用して一意のフィールドを作成すると、末尾にさまざまな空白がある値を確実に個別のものとして扱うことができます。

以上がMySQL が固有フィールドの末尾のスペースを無視するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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