查找同一表内的重复项
1.select * from corp where 企业名称 in (select 企业名称 from corp gropu by 企业名称 where count(企业名称)>1 )
SQL中的多条件分枝写法
2
select flag=
case 企业名称 when '中国北京大学' then '1'
when '北京大学哲学院' then '1'
when '北大哲学院' then '1'
else 企业名称 + '2' end,
企业名称,员工人数 ,企业资金,企业领导
into #temp
from corp
select 企业名称,员工人数 ,企业资金,企业领导
from #temp
where flag in (select flag from #temp gropu by flag where count(flag)>1 )
在sql中使用case进行判断
select jyid,
CASE
计算条件列表并返回多个可能结果表达式之一。
CASE 具有两种格式:
- 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。
- CASE 搜索函数计算一组布尔表达式以确定结果。
两种格式都支持可选的 ELSE 参数。
语法
简单 CASE 函数:
CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
END
CASE 搜索函数:
CASE
WHEN Boolean_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
END
参数
触发器的使用
当为表或视图定义了针对某一操作INSERT DELETE
UPDATE 的INSTEAD OF 类型触发器且执行了相应的操作时尽管触发器被触发但
相应的操作并不被执行而运行的仅是触发器SQL 语句本身
INSTEAD OF 触发器的主要优点是使不可被修改的视图能够支持修改
更新操作包括两个部分即先将更新的内容去掉然后将新值插入
因此对一个定义了更新类型触发器的表来讲当报告会更新操作时在删除表中存放了旧
值然后在插入表中存放新值
SQL Server中包含了几个可以访问系统注册表的扩展存储过程.但实际上这几个扩展存储过程是未公开的,从sql server 7.0就有了,
在SQL server 2000中仍然保留,他们以后可能会删除.但是这几个存储过程却提供了在当前的SQL Server版本中访问系统注册表的能力,
而且很多人利用SQL Server来进行攻击系统时,往往都会用到这几个扩展存储过程.所以最好在SQL Server中禁用他们.