【MySQL】文字列の比較で空白の有無が無視される?
問題
MySQLでは、文字列の比較で、空白の有無って無視されるの?
答え
MySQLでは、比較演算子 = を使ったとき、後続の空白は無視される仕様。
いずれかの標準演算子(= や <> など。LIKE は含まない)を使用してケース非依存文字列を比較する場合、後続の空白(スペース、タブ、改行復帰)は無視されます。(4.1のマニュアルより)
‘aスペーススペース’ = ‘a’ は true になる。
mysql> select 'a ' = 'a', ' a ' = ' a ', ' a ' = ' a ', 'a ' like 'a', ' a ' like ' a ', ' a ' like ' a ' \G *************************** 1. row *************************** 'a ' = 'a': 1 ' a ' = ' a ': 0 ' a ' = ' a ': 1 'a ' like 'a': 0 ' a ' like ' a ': 0 ' a ' like ' a ': 0
mysql> select 'a' = 'A', 'a ' = 'A', ' a ' = ' A ', ' a ' = ' A ', 'a' like 'A', 'a ' like 'A', ' a ' like ' A ', ' a ' like ' A ' \G *************************** 1. row *************************** 'a' = 'A': 1 'a ' = 'A': 1 ' a ' = ' A ': 0 ' a ' = ' A ': 1 'a' like 'A': 1 'a ' like 'A': 0 ' a ' like ' A ': 0 ' a ' like ' A ': 0
コメント