LoginSignup
2
1

More than 3 years have passed since last update.

【MySQL】文字列比較で空白が無視される

Posted at

きっかけ

Oracleではユニークなのに、MySQLだとユニーク設定しようとするとエラーになる項目があり
原因を追究したところ、データ後ろの半角␣の有無の違いでユニーク扱いになっているデータが、MySQLだと重複データとして扱われているようだったので調べてみた

公式ドキュメントによると

MySQL リファレンスマニュアル 4.1

いずれかの標準演算子(= や <> など。LIKE は含まない)を使用してケース非依存文字列を比較する場合、後続の空白(スペース、タブ、改行復帰)は無視されます。(4.1のマニュアルより)

対処法

MySQLの根本仕様なので、空白のままユニークキーとすることは、まずあきらめ
半角␣を別の任意の文字列(-ハイフン等)に置き換えて格納することにした。

REPLACE(問題の項目,' ','-')

該当の事象は、WHERE句、JOIN句で使用する際も同様の扱いになるため
注意が必要だ。

参考リンク

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1