SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

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

問題

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

関連するメモ

コメント