我的postgresql数据库中有很多表,有些以p开头,有些以p_开头。 e.g:
1. ptasi
2. pnomu
3. pteni
4. p_1150
5. p_1010
6. p_6050
当我搜索以p_开头的表格时:
SELECT table_name
FROM information_schema.tables
WHERE table_type = 'BASE TABLE'
AND table_name Like 'p_%'
AND table_schema = 'public'
它将返回所有六个表
1. ptasi
2. pnomu
3. pteni
4. p_1150
5. p_1010
6. p_6050
而不是
4. p_1150
5. p_1010
6. p_6050
我们怎样才能实现这个目标?
答案 0 :(得分:0)
下划线是LIKE
表达式中任意字符的通配符。
如果要匹配文字下划线,请使用反斜杠将其转义:
t=# with v(t) as (values('p_11'),('pop'))
select t from v where t like 'p\_%';
t
------
p_11
(1 row)
如果你在表名中有退格(这可能很奇怪,但仍然如此),你可以指定转义字符,例如:
t=# with v(t) as (values('p_11'),('pop'))
select t from v where t like 'p@_%' escape '@';
t
------
p_11
(1 row)
手册:https://www.postgresql.org/docs/current/static/functions-matching.html
模式中的下划线(_)代表(匹配)任何单个 字符;百分号(%)匹配零或更多的任何序列 字符。