我正在Oracle上运行查询,我需要在其中选择三个参数上的数据。 ID,MNO,NAME 这是我的查询样子
SELECT *
FROM USER_TABLE
WHERE L_ID <> 1111
AND ( ID = ''
OR MNO = '0215421101'
OR FIRST_NAME || ' ' || LAST_NAME LIKE '%' || '' || '%') //when Empty, search only return values for MNO
这将返回所有结果,因为所有记录中的空白都匹配。当FIRST_NAME + LAST_NAME为空字符串时,如何将其限制为仅MNO或ID
更新::
从名称参数返回数据时的this。
SELECT *
FROM USER_TABLE
WHERE L_ID <> 1111
AND ( ID = ''
OR MNO = ''
OR FIRST_NAME || ' ' || LAST_NAME LIKE '%' || 'User Name' || '%') //when have value, search only return values for NAme
答案 0 :(得分:0)
添加参数检查nvl
,它将检查当前值(始终为true)
Or FIRST_NAME = nvl(?,FIRST_NAME) and LAST_NAME = nvl(?,LAST_NAME)
答案 1 :(得分:0)
使用nvl或Decode函数删除字符串之前和之后的空格,并根据存储的数据库值使用修剪。