SQLでワイルドカードを使わずにLIKEを使った場合、=と挙動は同じとされていますし、PostgreSQLの公式ドキュメントでもそのように書かれているのですが、違うパターンがあったので記録。
PostgreSQLでの話ですが、
character(20)のカラム(ここでは仮にfooという名前のカラムとする)があったとして、そこに123456789というデータが入っていた場合、
foo = ‘123456789’ は真ですが、
foo LIKE ‘123456789’ は偽です。
https://www.postgresql.jp/document/9.6/html/datatype-character.htmlによれば、
「文字列が短い時はcharacterの値は空白で埋められ」
ということなのですが、=で判定するときにはその空白を無視してくれるのかな、という感じ。(違ったらすみません)