regexp-like - ORACLE DB 中的 REGEXP_LIKE 查询
问题描述
我目前需要匹配00000012345
并12345
在我的DB
搜索查询中。我目前正在使用以下查询:
SELECT *
FROM BPP.CHECK_REGISTER
WHERE CHECK_NO like CONCAT('%',:checkNum)
用于搜索,但这里%
可以表示除此之外的任何字符,0
因此我已将此查询替换为以下内容:
SELECT *
FROM BPP.CHECK_REGISTER
WHERE REGEXP_LIKE (CHECK_NO,'^(0*12345)$')
但在此查询中,我不想提及12345
,而是将其作为用户输入的参数提及,如第一个查询:checkNum
如何REGEXP_LIKE
使用用户输入仅使用 2 个参数重新表述条件,:checkNum
因为 oracle db 最多只允许 2 个参数。(另一个问题)
解决方案
您可以连接参数:
SELECT *
FROM BPP.CHECK_REGISTER
WHERE REGEXP_LIKE (CHECK_NO,'^(0*'||:checkNum||')$');
或者,将正则表达式部分添加到用户输入的值(在您的应用程序代码中),然后再将其传递给查询。
推荐阅读
- html - 当我单击它时,p 标签显示为一个链接,我需要访问 div 中包含的同一个链接
- javascript - 基于 Javascript/html/d3 集群和日历的时间序列数据可视化
- javascript - 无法加载图像 webpack (4.41.0)
- sql - 将 var binary 更新到现有 SQL 列(添加到现有图像)?
- ros - 脚本执行“休眠”多长时间?
- latex - 在乳胶中使用tabularx时如何将文本包装在单元格内?
- java - 重复时在 XML 文件中找到我想要的标签的最佳方法是什么?
- node.js - 不调用 Jest spiedOn 方法,而是调用一次更改测试用例顺序
- java - 在服务器端和客户端之间共享字段约束
- php - 为什么谷歌地图中多边形的坐标返回错误的纬度、纬度值?