现在不算晚 2021-04-29 09:05 采纳率: 40%
浏览 42

oracle 连表模糊查询 like里有下划线改怎么处理

select a.OWNER||'.'||A.NAME proc_name,b.owner table_owner ,b.table_name table_name,a.text from all_SOURCE A ,all_tables B 
WHERE UPPER(A.TEXT) LIKE '%'||B.TABLE_NAME||'%' AND A.TYPE = 'PROCEDURE';

查询结果会有这种

        proc_name                     table_owner    table_name    text
1     SYS.VALIDATE_APEX    JACOB           T_USER          "  select user# into l_owner# from sys.user$ where name = 'APEX_030200';

会有这种结果,t_user里的下划线被当成了通配符,求教该怎么处理

  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-14 22:25
    关注

    对于这个问题,您可以考虑转义下划线字符,使其不被当成通配符。在 Oracle 中,可以使用 ESCAPE 关键字指定转义字符,将其作为通配符前缀以进行匹配查询。具体做法如下:

    select a.OWNER||'.'||A.NAME proc_name, b.owner table_owner, b.table_name table_name, a.text from all_SOURCE A, all_tables B
    WHERE UPPER(A.TEXT) LIKE '%' || REPLACE(B.TABLE_NAME, '_', '_') || '%' ESCAPE '' AND A.TYPE = 'PROCEDURE';

    在上面的查询语句中,使用 REPLACE 函数将所有的下划线替换为转义字符 '_',然后在 LIKE 子句中指定 ESCAPE 字符,以确保下划线只被用作普通字符而不是通配符。

    这应该能解决您查询中下划线被误认为是通配符的问题。

    评论

报告相同问题?

悬赏问题

  • ¥20 Html备忘录页面制作
  • ¥15 黄永刚的晶体塑性子程序中输入的材料参数里的晶体取向参数是什么形式的?
  • ¥20 数学建模来解决我这个问题
  • ¥15 计算机网络ip分片偏移量计算头部是-20还是-40呀
  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?
  • ¥15 django5安装失败