所以我有一个问题,如果发票号包含一个值或者是一个精确值,我想返回发票号,其中精确值优先于包含值。
例如发票号码是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 才是最重要的。
你可以尝试下面的方法。
SELECT *
FROM TABLE
WHERE INV_NUM = INPUT1
OR INV_NUM <> INPUT1 AND INV_NUM LIKE '%'||'INPUT2'||'%'