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

时间:2018-11-06 06:55:21

标签: sql oracle select sql-like case-insensitive

我有一个计数查询,该计数应该计算与显示的列表相对应的记录总数,我使用like通过匹配自由文本来过滤出记录,表中存在记录,但是查询计数是0。

我所做的是,我在搜索框中提供了文本 abc ,但在表格内部,数据以大写形式存储,即 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%'

3 个答案:

答案 0 :(得分:4)

由于您lower在表的列中,因此也应该使用小写字母:

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

答案 1 :(得分:3)

对于不区分大小写的最简单的方法是使用下层或上层,我认为您应该以这种方式修改查询:

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%'

答案 2 :(得分:0)

您可以在下面尝试

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')||'%'