sql關於對一個字段同時滿足多條件判斷來篩選查詢


表所有數據

查詢userName為abc或xyz的


以下為本菜鳥項目中遇到的問題:

背景:

/**
 * wangjie 180629
 * 
 * 學生需要查詢四種可能的消息
 * 1.班級管理員發來的,根據自身的學籍號條件查詢
* 2.省級管理員發送區縣全部的,根據接收對象地區號作為條件查詢
 * 3.省級管理員發送全省全部的,根據接收對象類型為"all"查詢
 * 4.省級管理員發送全市全部的,根據接收對象市id查詢
 * 
 * */

例子

問個sql語句問題,比如如何查出

name為小紅的

或者

name為小黑並且sex為男的

以上兩個條件拼接一條語句寫出來 

	/**
	 * 接收到的學習紀實--分頁
	 * @param pageNumber
	 * @param pageSize
	 * @param map
	 * @return
	 */
	@Override
	public Pagenate<StudyRecordTableEntity> pageforAcceptStudyTableEntity(
			int pageNumber, int pageSize, Map<String, String> map) {
		
		
//		map傳過來的值:{classCode=5051, acceptcode=15040602011, titles2=, role=03, pointId=0482, cityCode=3704, classAdminCode=null, ydrq12=, ydrq22=}
		// TODO Auto-generated method stub
		String titles2=map.get("titles2");		//標題
		String ydrq12=map.get("ydrq12");		//開始日期
		String ydrq22=map.get("ydrq22");		//結束日期
		String acceptcode=map.get("acceptcode");//接收人編號
		
		/**
		 * wangjie 180629
		 * 
		 * 學生需要查詢四種可能的消息
		 * 1.班級管理員發來的,根據自身的學籍號條件查詢
		 * 2.省級管理員發送區縣全部的,根據接收對象地區號作為條件查詢
		 * 3.省級管理員發送全省全部的,根據接收對象類型為"all"查詢
		 * 4.省級管理員發送全市全部的,根據接收對象市id查詢
		 * 
		 * */
//		接收區縣---區縣id
		String point_id = map.get("pointId");
//		接收市id
		String city_id = map.get("cityCode");
		Session session = super.getHibernateTemplate().getSessionFactory().getCurrentSession();
		StringBuffer sb=new StringBuffer();
		
		// 學員接收信息
		sb.append(" from StudyRecordTableEntity srt,StudyRecAcceptRoleEntity accept,SysAccCount account where srt.id=accept.sturec_code and account.accCode=srt.sendopt ");
		sb.append(" and accept.accrole='03' and srt.flag='1' ");
		sb.append(" and (  accept.send_type='single' and ( accept.accept_range like '%"+acceptcode+"%' or accept.accept_range like '%"+point_id+"c%' or accept.accept_range like '%"+city_id+"%' ) ");
		sb.append(" or accept.send_type='all' ) ");
		
		if(titles2!=null&&!"".equals(titles2)){
			sb.append(" and srt.titles like '%"+titles2+"%' ");
		}
		if(ydrq12!=null&&!"".equals(ydrq12)){
			sb.append(" and srt.sdate >= '"+ydrq12+"' ");
		}
		if(ydrq22!=null&&!"".equals(ydrq22)){
			Calendar calendar=new GregorianCalendar();
			calendar.setTime(DateUtils.parseDate(ydrq22, "yyyy-MM-dd"));
			calendar.add(calendar.DATE, 1);
			sb.append(" and srt.sdate < '"+DateUtils.formateDate(calendar.getTime(), "yyyy-MM-dd")+"' ");
		}
		String hqlCnt="select count(0) "+sb.toString();
		String hql="select srt "+sb.toString()+" order by srt.sdate desc,srt.sturec_type asc ";
		System.out.println("拼接的sql---->"+hql);
		Query queryCnt=session.createQuery(hqlCnt);
		Query query=session.createQuery(hql);
		return super.findByPage(pageNumber, pageSize, queryCnt, query);
	}

后台是hql語句查詢的,剛開始沒想起來,急的我差點寫四個sql分別查詢

一個同胞的:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM