易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 : sql

SQL获取时间函数

DATEDIFF(参数一,参数二,参数三) ---参数一:year month day; 参数二:比较的起始日期,默认1900-1-1;参数三:比较的日期。
eg:DATEDIFF(year,0,getdate())表示比较0(默认1900-1-1)到当前的日期想差几年
 SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)  -- 取得本月的第一天
 SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)  -- 取得本周的星期一
 SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)  -- 取得本年的第一天
 SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)) --上个月最后一天
 SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate())+1, 0)) --本月最后一天
 SELECT dateadd(m,0,dateadd(yy,datediff(yy,0,getdate()),0)) --取得本年第一月 ......

SQL exists 和in

in 和 exists其实挺好区别的.且看下边基本概念。
in 是一个集合运算符.
a in {a,c,d,s,d....}
这个运算中,前面是一个元素,后面是一个集合,集合中的元素类型是和前面的元素一样的。实现的对集合中的元素进行遍历,以确定给定的元素a是否与子查询或列表中的值相匹配。
in 运算用在sql语句中,它后面带的select 一定是选一个字段,而不是select *。
 
exists是一个存在判断,指定一个子查询,检测行的存在。如果后面的查询中有结果,则exists为真,否则为假.
 
 
比如说你要判断某班是否存在一个名为"小明"的学生,你可以用in 运算:
"小明" in (select sname from student)
这样(select sname from student) 返回的是一个全班姓名的集合,in用于判断"小明"是否为此集合中的一个数据;
同时,你也可以用exists语句:
exists (select * from student where sname="小明")
 
 
这两个函数是差不多的, 但是由于优化方案的不同, 通常NOT EXISTS要比NOT IN 要快, 因为NOT EXISTS可以使用结合算法而NOT IN 就不行了,而EXISTS则不如IN快, 因为这时候IN可能更多的使用结合算法.
 
select * from 表A where exists(select * from 表B where 表B.id ......

SQL触发器实例1

定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。
      常见的触发器有三种:分别应用于Insert , Update , Delete 事件。
      我为什么要使用触发器?比如,这么两个表:
      Create Table Student(              --学生表
        StudentID int primary key,       --学号
        ....
       )
      Create Table BorrowRecord(               --学生借书记录表
        BorrowRecord   int identity(1,1),       --流水号  
        Stu ......

Sql Server 触发器(二)


 
接(一)
--触发器示例2
/*
创建触发器[T_INSERT_卷烟销售表],该触发器较复杂。
说明: 每当[卷烟库存表]发生 INSERT 动作,则引发该触发器。
触发器功能: 实现业务规则。
业务规则: 如果销售的卷烟品牌不存在库存或者库存为零,则返回错误。
否则则自动减少[卷烟库存表]中对应品牌卷烟的库存数量和库存金额。
*/
IF EXISTS (SELECT NAME from SYSOBJECTS WHERE XTYPE = ’TR’ AND NAME = ’T_INSERT_卷烟销售表’)
DROP TRIGGER T_INSERT_卷烟销售表
GO
CREATE TRIGGER T_INSERT_卷烟销售表
ON 卷烟销售表
FOR INSERT
AS
BEGIN TRANSACTION
--检查数据的合法性:销售的卷烟是否有库存,或者库存是否大于零
IF NOT EXISTS (
SELECT 库存数量
from 卷烟库存表
WHERE 卷烟品牌 IN (SELECT 卷烟品牌 from INSERTED)
)
BEGIN
--返回错误提示
RAISERROR(’错误!该卷烟不存在库存,不能销售。’,16,1)
--回滚事务
ROLLBACK
RETURN
END
IF EXISTS (
SELECT 库存数量
from 卷烟库存表
WHERE 卷烟品牌 IN (SELECT 卷烟品牌 from INSERTED) AND
库存数量 <= 0
)
BEGIN
--返回错误提示
RAISERROR(&rs ......

sql函数

1:replace 函数
第一个参数你的字符串,第二个参数你想替换的部分,第三个参数你要替换成什么
select replace('lihan','a','b')
                                                                  
-----------------------------
lihbn
(所影响的行数为 1 行)
=========================================================
2:substring函数
第一个参数你的字符串,第二个是开始替换位置,第三个结束替换位置
select substring('lihan',0,3);
-----
li
(所影响的行数为 1 行)
=========================================================
3:charindex函数
第一个参数你要查找的char,第二个参数你被查找的字符串 返回参数一在参数二的位置
select  charindex('a','lihan')
---------- ......

java类中写sql语句,查询条件包含换行

detachedCriteria.add(Restrictions.or(
       Restrictions.like("chengBanDanWeiIds", rForm.getChengBanDanWeiIds()+(char)13, MatchMode.START),
       Restrictions.or(
               Restrictions.like("chengBanDanWeiIds", rForm.getChengBanDanWeiIds()+ (char)13, MatchMode.END),
         Restrictions.eq("chengBanDanWeiIds", rForm.getChengBanDanWeiIds())
         )));
换行不用CHAR(13),用(char)13 ......

java类中写sql语句,查询条件包含换行

detachedCriteria.add(Restrictions.or(
       Restrictions.like("chengBanDanWeiIds", rForm.getChengBanDanWeiIds()+(char)13, MatchMode.START),
       Restrictions.or(
               Restrictions.like("chengBanDanWeiIds", rForm.getChengBanDanWeiIds()+ (char)13, MatchMode.END),
         Restrictions.eq("chengBanDanWeiIds", rForm.getChengBanDanWeiIds())
         )));
换行不用CHAR(13),用(char)13 ......
总记录数:4346; 总页数:725; 每页6 条; 首页 上一页 [294] [295] [296] [297] 298 [299] [300] [301] [302] [303]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号