Oracle sql中LIKE的空参数应为false

时间:2018-12-18 10:56:21

标签: oracle

我正在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

2 个答案:

答案 0 :(得分:0)

添加参数检查nvl,它将检查当前值(始终为true)

 Or FIRST_NAME = nvl(?,FIRST_NAME) and LAST_NAME = nvl(?,LAST_NAME)

答案 1 :(得分:0)

使用nvl或Decode函数删除字符串之前和之后的空格,并根据存储的数据库值使用修剪。