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%'
由于您正在 lower
ing 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%'
我有计数查询,它应该统计显示列表对应的记录总数,我使用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%'
由于您正在 lower
ing 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%'