FAIRYFAR-INTERNAL
 
  FAIRYFAR-INTERNAL  |  SITEMAP  |  ABOUT-ME  |  HOME  
PostgreSQL LIKE子句的坑

在一些资料(包括部分AI的回答)里认为 like 在不使用通配符的情况下与 = 等价,例如以下文档:

image

某AI的回答:

image

经过pg13以及更高版本验证,char类型不适应上述说法。

例子:

snippet.sql
[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和=的实现也是不一样的。



打赏作者以资鼓励:
移动端扫码阅读: