在一些资料(包括部分AI的回答)里认为 like 在不使用通配符的情况下与 = 等价,例如以下文档:
某AI的回答:
经过pg13以及更高版本验证,char类型不适应上述说法。
例子:
[fairyfar@bogon postgresql]$ psql postgres psql (19devel) TYPE "help" FOR help. test=# CREATE TABLE t1(a CHAR(3)); CREATE TABLE test=# INSERT INTO t1(a) VALUES ('xyz'), ('uv'); INSERT 0 2 test=# SELECT * FROM t1 WHERE a LIKE 'uv'; a ---- (0 ROWS) test=# SELECT * FROM t1 WHERE a = 'uv'; a ---- uv (1 ROW) test=# SELECT * FROM t1 WHERE a LIKE 'uv%'; a ---- uv (1 ROW)
实际上,在执行器内部,即使没有通配符,like和=的实现也是不一样的。