おすすめ本

最近のトラックバック

  • event (夢茶爺&苦茶爺のPC奮戦備忘録)

AccRanking

Ad

« FireFoxブラウザでMDファイル(Markdown)を表示する方法について | メイン | 雪下ろしにはヘルメットが必要です »

2020年7月30日 (木)

【MySQL】文字列検索の大文字・小文字の区別の注意点について

文字列検索において、データ型が「非バイナリ文字列」(CHARVARCHARVARCHAR)の場合には 比較対象の照合順序が使用されます。

データ型が「バイナリ文字列」(BINARYVARBINARYBLOB)の場合の検索には比較対象のバイト値が使用されます。

尚、「非バイナリ文字列」と「バイナリ文字列」の比較では、「バイナリ文字列」の比較で処理されます。

「非バイナリ文字列」の比較で問題が発生する場合は、以下の様な場合です。
仮に以下の様なテーブルが在ったとします。 尚、このテーブルの文字コードは「latin1」になっているとします。

以下の様に一部一致検索(Like)を行います。
普通に考えると「A%」なので大文字「A」を含むものを検索されるのですが、小文字「a」も対象となって結果が表示されています。
文字コード「latin1」の照合順序ではアルファベットの大文字・小文字を区別しないため、この様なことが起こります。

そこで以下の様にSQLを変更してみます。
条件の対象となる「ADDCOL1」の照合順序を COLLATE で強制的に 「latin1」のバイナリ文字列である「latin1_bin」と 指定すると、大文字・小文字が区別されます。

トラックバック

このページのトラックバックURL:
http://app.mitelog.jp/t/trackback/459161/34213413

【MySQL】文字列検索の大文字・小文字の区別の注意点についてを参照しているブログ:

コメント

コメントを投稿