LoginSignup
0
1

More than 3 years have passed since last update.

MySQLの文字列比較で末尾に空白があったら注意な件

Posted at

MySQLの文字列比較で初めて知ったことがあったのでメモ。

文字列比較

文字列比較は

  • LIKE : 単純なパターン一致
  • NOT LIKE : 単純なパターン一致の否定
  • STRCMP() : 2つの文字列を比較

などがあるが、"="演算子で実行される文字列の末尾に空白があった場合は無視される。

"="もしくはLIKEの場合

select 'a' = 'a', 'a' = 'a  ', 'a' like 'a', 'a' like 'a  ';
'a' = 'a' 'a' = 'a '(空白あり) 'a' like 'a' 'a' like 'a '(空白あり)
1 1 1 0

LIKEの場合は正常に文字列比較するよう。

STRCMP()の場合

STRCMP() は、文字列が同じ場合は 0 を返し、現在のソート順に従って 1 番目の引数が 2 番目よりも小さい場合は -1、それ以外の場合は 1 を返します。

STRCMPの場合も、末尾の空白は無視して同一値として判別するよう。

select STRCMP('a', 'a'), STRCMP('a', 'a  ');
STRCMP('a', 'a') STRCMP('a', 'a ')(空白あり)
0 0

参照

0
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
0
1