允许在同一字段上使用 Exact 或 Contains 语句的 SQL WHERE 子句

问题描述 投票:0回答:1

所以我有一个问题,如果发票号包含一个值或者是一个精确值,我想返回发票号,其中精确值优先于包含值。

例如发票号码是123和1234

我想写: 示例1

INPUT1 = '123'
INPUT2 = ''

SELECT
*
FROM TABLE
WHERE INV_NUM = INPUT1
OR INV_NUM LIKE '%INPUT2%'

结果同时返回 123 和 1234

期望的结果返回123

但是,如果我不知道确切的数字,我想使用 input2 来查找包含 示例2

INPUT1 = ''
INPUT2 = '4'
same statement
SELECT
*
FROM TABLE
WHERE INV_NUM = INPUT1
OR INV_NUM LIKE '%INPUT2%'

RESULT 返回 123 和 1234,因为 or

期望结果仅返回1234

我该如何编写它,使其优先考虑完全匹配,但如果完全匹配为空,则仅使用包含输入?

使用 Oracle 才是最重要的。

sql oracle
1个回答
0
投票

你可以尝试下面的方法。

SELECT *
FROM TABLE
WHERE INV_NUM = INPUT1
      OR INV_NUM <> INPUT1 AND INV_NUM LIKE '%'||'INPUT2'||'%'
© www.soinside.com 2019 - 2024. All rights reserved.