【问题标题】:REGEXP_LIKE QUERY IN ORACLE DBORACLE DB 中的 REGEXP_LIKE 查询
【发布时间】:2018-11-14 09:51:49
【问题描述】:

我目前需要在 DB 搜索查询中匹配 0000001234512345。 我目前正在使用以下查询:

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

我如何用用户输入:checkNum 仅使用 2 个参数来改写 REGEXP_LIKE 条件,因为 oracle db 最多只允许 2 个参数。 (另一个问题)

【问题讨论】:

    标签: regexp-like


    【解决方案1】:

    你可以连接参数:

    SELECT * 
    FROM BPP.CHECK_REGISTER 
    WHERE REGEXP_LIKE (CHECK_NO,'^(0*'||:checkNum||')$');
    

    或者将正则表达式部分添加到用户输入的值(在您的应用程序代码中),然后再将其传递给查询。

    【讨论】:

    • 我们如何使用来自 JPA 的相同查询? searchCriteria.append(" 和 REGEXP_LIKE (e.checkNumber,'^(0*||:checkNum||)$')");这不是 JPA 中定义的标准。我该如何改写??
    猜你喜欢
    • 2019-11-17
    • 2021-11-19
    • 1970-01-01
    • 2018-03-22
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多