Tôi đang cố gắng sử dụng MapSqlParameterSource để tạo truy vấn sử dụng mệnh đề Like.Điều khoản giống như mùa xuân
Mã này giống như thế này. Hàm chứa nó nhận tên nameParam:
String namecount = "SELECT count(*) FROM People WHERE LOWER(NAME) LIKE :pname ";
String finalName= "'%" +nameParam.toLowerCase().trim() + "%'";
MapSqlParameterSource namedParams= new MapSqlParameterSource();
namedParams.addValue("pname", finalName);
int count= this.namedParamJdbcTemplate.queryForInt(namecount, namedParams);
Điều này không hoạt động chính xác, cho tôi khoảng từ 0-10 kết quả khi tôi nhận hàng nghìn. Về cơ bản, tôi muốn truy vấn cuối cùng trông giống như:
SELECT count(*) FROM People WHERE LOWER(NAME) LIKE '%name%'
nhưng điều này rõ ràng là không xảy ra. Bất kỳ trợ giúp sẽ được đánh giá cao.
Edit:
Tôi cũng đã thử đặt '%' s trong SQL, như
String finalName= nameParam.toLowerCase().trim();
String namecount = "SELECT count(*) FROM People WHERE LOWER(NAME) LIKE '%:pname%' "
;
nhưng điều này không hoạt động.
Bạn là anh hùng của tôi. Cảm ơn rất nhiều. Tôi đã làm việc này trong một khoảng thời gian dài. – Chris
làm thế nào về một số câu trả lời được chấp nhận tình yêu? – Jeff
Lợi ích của việc ghép các ký hiệu% vào tham số vs trực tiếp đưa nó vào truy vấn sql của bạn là gì? CHỌN số (*) TỪ NGƯỜI CÓ LỚN (TÊN) THÍCH '%' +: pname + '%' –