ORACLE_sql中后相似下划线“_”没有匹配生效

在oracle中我想查出库中所有表名类似“T_BD_ACCOUNTVIEW_QX_”的记录,用sql语句查询如下,得到结果却不一样,
 SELECT table_name FROM user_tables u where u.table_name like 'T_BD_ACCOUNTVIEW_QX_%';

结果如下:

 很显然,最后一个横杠没有匹配生效,查询后才知道,

在Oracle中,下划线(_)是一个通配符,它用于匹配任何单个字符。而百分号(%)是另一个通配符,用于匹配零个或多个字符。因此,在查询中,"T_BD_ACCOUNTVIEW_QX_%"会匹配"T_BD_ACCOUNTVIEW_QXBAK",因为下划线匹配了"BAK"这三个字符。如果你想匹配"T_BD_ACCOUNTVIEW_QXBAK"之外的表名,可以使用转义字符来匹配下划线。例如:

SELECT table_name FROM user_tables u WHERE u.table_name LIKE 'T_BD_ACCOUNTVIEW_QX\_%' ESCAPE '\';

在这个查询中,使用了转义字符(\)来匹配下划线,确保查询结果不会包括"T_BD_ACCOUNTVIEW_QXBAK"。

 

 

 
 
posted @ 2024-02-04 12:52  凉了记忆  阅读(41)  评论(0编辑  收藏  举报