我有一个计数查询,该计数应该计算与显示的列表相对应的记录总数,我使用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%'
答案 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')||'%'