Sql字段动态比较判断

<sql id="getUserInfoList_body">
SELECT * from userinfo
<dynamic prepend="WHERE">
  <isNotNull prepend="AND" property="id"> a.id=#id#</isNotNull>
  <isNotNull prepend="AND" property="userName"> a.userName like concat('%', #userName#, '%') </isNotNull>
  <isNotNull prepend="AND" property="inschoolTimeEnd"> a.inschoolTime &lt; #inschoolTimeEnd# </isNotNull>
  <isNotNull property="roleID">
<isEqual property="roleID" compareValue="3" prepend="AND">
addrProvinceID in (SELECT areaID FROM co_user_area WHERE adminID = #adminID#)</isEqual>
<isEqual property="roleID" compareValue="4" prepend="AND">
addrCityID in (SELECT areaID FROM co_user_area WHERE adminID = #adminID#)</isEqual>
  </isNotNull>
</dynamic>
ORDER BY a.id DESC
</sql>

sql语句返回主键id     

<insert id="">      //注意无需resultClass

  <selectKey resultClass="int" keyProperty="id">
  SELECT @@IDENTITY AS id
  </selectKey>
</insert> public Integer insert(Invoice invoice) throws DAOException {
return (Integer)getSqlMapClientTemplate().insert("insert",invoice);
}

sql时间范围查询条件  

//一
< isNotNull prepend="AND" property="createStartDateStr">
  CONVERT(varchar(100), kb.createDate , 23) &gt;= #createStartDateStr#
</isNotNull>
<isNotNull prepend="AND" property="createEndDateStr">
  CONVERT(varchar(100),kb.createDate,23) &lt;=#createEndDateStr#
</isNotNull> //二
<isNotNull prepend="AND" property="startTime">
  kc.createDate >= #startTime#
</isNotNull>
<isNotNull prepend="AND" property="endTime">
  <![CDATA[kc.createDate <= #endTime#]]>
</isNotNull> //三
<isNotNull prepend="AND" property="startTime">
  CONVERT(varchar(100), kb.createDate , 23) &gt;= #startTime#
</isNotNull>
<isNotNull prepend="AND" property="endTime">
  CONVERT(varchar(100), kb.createDate , 23) &lt;= #endTime#
</isNotNull>

sql每月数据统计  

SELECT
COUNT(DISTINCT kes.userID) AS examCount,
CONVERT(nvarchar(7), kesd.createTime, 120) AS month
FROM kp_out_system kos WITH (NOLOCK)
LEFT JOIN kp_exam_score kes WITH (NOLOCK)
ON kes.outSystemSign = kos.outSystemSign
LEFT JOIN kp_exam_score_detail kesd WITH (NOLOCK)
ON kesd.examScoreID = kes.id AND kesd.valid = 1
< isNotNull prepend="AND" property="startTime"> kesd.createTime &gt;= #startTime# </isNotNull>
<isNotNull prepend="AND" property="endTime"> kesd.createTime &lt;= #endTime# </isNotNull>
WHERE kos.status = 1
<isNotNull prepend="AND" property="outSystemSign"> kos.outSystemSign=#outSystemSign# </isNotNull>
AND kos.outSystemSign IS NOT NULL AND kos.sysAreaID IS NOT NULL AND kesd.createTime IS NOT NULL
GROUP BY CONVERT(nvarchar(7), kesd.createTime, 120)
ORDER BY CONVERT(nvarchar(7), kesd.createTime, 120)

sqlsum()结果判空 

SELECT ISNULL(SUM(myTable.thesisCount),0) AS thesisCount FROM (
  SELECT
COUNT(kuu.id) AS thesisCount,
ISNULL(kos.outSystemName, '无') AS outSystemName
FROM kp_out_system kos WITH (NOLOCK)
LEFT JOIN kp_user_upload_thesis kuu WITH (NOLOCK) ON kuu.outSystemSign = kos.outSystemSign AND kuu.valid = 1
WHERE kos.status = 1
   <isNotNull prepend="AND" property="outSystemSign"> kuu.outSystemSign = #outSystemSign# </isNotNull>
AND kos.outSystemSign IS NOT NULL AND kos.sysAreaID IS NOT NULL
GROUP BY ISNULL(kos.outSystemName, '无')
) AS myTable

验证某个属性是否已存在(修改信息时用)

select COUNT(*) from ... where id != #id# and ... = #...#

sql数组传参(in

//Action代码
if (null != studyID && 2 == studyID.intValue()) {
Integer[] studyIDs = new Integer[] { 2,3, 4 };
userInfo.setStudyIDs(studyIDs);
} else {
userInfo.setStudyID(studyID);
} //Xml文件
<isNotNull prepend="AND" property="studyID">
a.studyID=#studyID#
</isNotNull>
<isNotNull prepend="AND" property="studyIDs">
a.studyID in
<iterate property="studyIDs" open="(" close=")" conjunction=",">
#studyIDs[]#
</iterate>
</isNotNull>

Int类型拼接需要使用cast()  

SELECT (SELECT DISTINCT
CAST(studyID AS varchar) + ','
FROM kp_study_type
WHERE outSystemSign = 'drivingcoach' AND valid = 1
FOR xml PATH (''))
AS studyIDs,
ISNULL(
SUM(CASE
WHEN b.isPass = 1 THEN 1 ELSE 0
END), 0) AS isPassCount,
ISNULL(
SUM(CASE
WHEN b.isOpen = 1 OR b.isOpen = 3 THEN 1 ELSE 0
END), 0) AS isOpenCount,
ISNULL(
SUM(CASE
WHEN b.isOpen = 1 OR b.isOpen = 3 THEN 0 ELSE 1
END), 0) AS isNotOpenCount
FROM kp_study_type a WITH (NOLOCK)
INNER JOIN kp_select_studyType b WITH (NOLOCK)
ON a.studyID = b.studyID AND b.valid = 1
INNER JOIN kp_user_info kui WITH (NOLOCK)
ON kui.ID = b.userID AND kui.valid = 1
LEFT JOIN (SELECT
k.studyID,
k.userID,
SUM(k.studyTimes) studyTimes,
SUM(CASE
WHEN k.studyTimes >= k.studyTime * 60 THEN 1 ELSE 0
END) coursefinishCount,
COUNT(k.courseID) courseCount
FROM (SELECT
r.studyID,
t.userID,
SUM(t.studyTimes) AS studyTimes,
r.courseID,
r.studyTime
FROM kp_studyCourse_relation r WITH (NOLOCK)
LEFT JOIN kp_course c WITH (NOLOCK)
ON r.courseID = c.id
LEFT JOIN kp_study_course_time t WITH (NOLOCK)
ON c.courseNumber = t.courseNumber AND t.studyID = r.studyID
WHERE r.valid = 1 AND c.valid = 1 AND t.id IS NOT NULL
GROUP BY r.studyID,
t.userID,
r.courseID,
r.studyTime) k
GROUP BY k.studyID,
k.userID) e
ON a.studyID = e.studyID AND b.userID = e.userID
WHERE a.valid = 1 AND a.studyID IN (SELECT DISTINCT
studyID
FROM kp_select_studyType
WHERE outerSystemSign = 'drivingcoach' AND valid = 1 AND isOpen = 1)

sql截取字符串 

SELECT DISTINCT
ISNULL(SUBSTRING(areaID, 1, 6), 0) AS areaID
FROM kp_user_info

SELECT
TOP 10
kui.username
FROM kp_user_info kui WITH (NOLOCK)
LEFT JOIN dic_area dc WITH (NOLOCK)
ON RIGHT(kui.areaID, 6) = dc.areaID

地区搜索,传参设置

if(null != provinceID && !"000000".equals(provinceID)){
productOrder.setAreaID(provinceID);
}
if(null!=cityID && cityID != ""){
//数据库存储为110000:110101,依据存储方式设置
productOrder.setAreaID(provinceID+":"+cityID);
} <dynamic prepend="">
<isNotNull prepend="AND" property="areaID">
    kui.areaID like #areaID# + '%'
   </isNotNull>
</dynamic>

以...开头

*
FROM computer
WHERE sex = '男' AND LEFT(name, 1) IN ('李', '陈')

SELECT
*
FROM computer
WHERE sex = '男'
(and name like '李__'or name like '陈__')

跨库复制表数据

//-1-
SET IDENTITY_INSERT cdel_jxjy_flat20171106..op_ip_login_control ON;
//-2-
INSERT INTO cdel_jxjy_flat20171106..op_ip_login_control (id, ip, notes, valid, creator, createTime)
SELECT * FROM cdel_jxjy_flat0725..op_ip_login_control

最新文章

  1. Storm进程通信机制
  2. Visual Studio 2013 (vs2013)中“向前定位”,“向后定位”按钮
  3. Java--&gt;Gson序列化及反序列化
  4. Mac下好用的取色器 Sip
  5. [GRYZ2015]Graph
  6. hadoop 文件 复制 移动 FileUtil.copy
  7. bzoj1559
  8. 24小时学通LINUX内核系列
  9. Android开发性能优化大总结(二)
  10. 在CentoOS中安装g++ 并连接Oracle数据库
  11. 指针参数的传递(节选 C++/C 高质量编程 林锐)
  12. PS切图保存后的背景图为透明
  13. ajax删除数据(不跳转页面)
  14. Oracle组成介绍
  15. iptables命令
  16. WIFI 万能钥匙万玉权:团队之中要有跨三界之外的“闲人” [转]
  17. VS2010_慢
  18. j.u.c系列(03)---之AQS:AQS简介
  19. 使用 Python 的 Socket 模块构建一个 UDP 扫描工具
  20. 【转】每天一个linux命令(30): chown命令

热门文章

  1. 阿里云Ubuntu配置安装MQTT服务器
  2. 什么是CDN?哪些是流行的jQuery CDN?使用CDN有什么好处?
  3. 第十八章节 BJROBOT 安卓手机 APP 建地图【ROS全开源阿克曼转向智能网联无人驾驶车】
  4. Ubuntu/Liinux睡眠无法唤醒解决方法:ACPI设置
  5. linux环境下oracle 11g 静默安装
  6. (二)数据源处理4-excel部分封装及数据转换
  7. Java Mybatis快速入门之基本使用
  8. linux之平均负载(学习笔记非原创)
  9. 【Oracle】创建用户配额总是不足的解决问题 quota
  10. Kioptix Level 1