oracle 12g 中不区分大小写的搜索

Case Insensitive search in oracle 12g

我有计数查询,它应该统计显示列表对应的记录总数,我使用like通过匹配自由文本来过滤记录,记录存在于table 但是,查询计数仍然是 0。

我做了什么,我在搜索框中提供了文本 abc,但在 table 中,数据存储在大写的 i,e ABC.

我想要一种不区分大小写的搜索方法。

查询:

SELECT
    COUNT(calender_id)
FROM
    calender s
    LEFT JOIN userdetail uu ON update_by = uu.user_id
WHERE
    calender_id = calender_id
     AND LOWER(s.details) LIKE 'Abc%'

由于您正在 lowering table 的列,因此您也应该使用小写文字:

LOWER(s.details) LIKE 'abc%'
-- Here ---------------^

你可以试试下面

SELECT
    COUNT(calender_id)
FROM
    calender s
    LEFT JOIN userdetail uu ON update_by = uu.user_id
WHERE
    calender_id = calender_id
     AND LOWER(s.details) LIKE lower('Abc')||'%'

对于不区分大小写的最简单的方法是使用 lower 或 upper,我认为你应该这样修改查询:

SELECT
    COUNT(calender_id)
FROM
    calender s
    LEFT JOIN userdetail uu ON update_by = uu.user_id
WHERE
    calender_id = calender_id
     AND LOWER(s.details) LIKE 'abc%'

SELECT
    COUNT(calender_id)
FROM
    calender s
    LEFT JOIN userdetail uu ON update_by = uu.user_id
WHERE
    calender_id = calender_id
     AND UPPER(s.details) LIKE 'ABC%'