易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL Server 2005 EXCEPT和INTERSECT运算符


--> Title  : SQL Server 2005EXCEPT和INTERSECT运算符
--> Author : wufeng4552
--> Date   : 2009-10-30
 
(一)概念
EXCEPT和INTERSECT运算符使您可以比较两个或多个SELECT语句的结果并返回非重复值。
(二)區別
EXCEPT运算符返回由EXCEPT运算符左侧的查询返回、而又不包含在右侧查询所返回的值中的所有非重复值。
INTERSECT返回由INTERSECT运算符左侧和右侧的查询都返回的所有非重复值。
(三)注意點
(3.1) 使用EXCEPT或INTERSECT比较的结果集必须具有相同的结构。它们的列数必须相同,并且相应的结果集列的数据类型必须兼容
(3.2) INTERSECT运算符优先于EXCEPT
(3.3) SELECT INTO必须是包含INTERSECT或EXCEPT运算符的语句中的第一个查询,用来创建容纳最终结果集的表
(3.4)ORDER BY子句中的列名或别名必须引用左侧查询返回的列名
(四)實例
SET NOCOUNT ON
--建立測試數據
DECLARE @T1 TABLE(ID INT,[NAME] VARCHAR(10))
INSERT @T1 SELECT 1,'A'
INSERT @T1 SELECT 1,'A'
INSERT @T1 SELECT 2,'B'
INSERT @T1 SELECT 2,'C'
INSERT @T1 SELECT 3,NULL
INSERT @T1 SELECT NULL,'D'
INSERT @T1 SELECT NULL,NULL
DECLARE @T2 TABLE(ID INT,[NAME] VARCHAR(10))
INSERT @T2 SELECT 1,'A'
INSERT @T2 SELECT 2,'E'
INSERT @T2 SELECT 3,'F'
DECLARE @T3 TABLE(ID INT,[NAME] VARCHAR(10))
INSERT @T3 SELECT 4,'G'
INSERT @T3 SELECT 3,NULL
INSERT @T3 SELECT 5,'H'
--1 EXCEPT从左查询中返回右查询沒有找到的所有非重复值。
--找出@T1表的中不存在@T2表的所有非重复值
SELECT * from @T1
EXCEPT
SELECT * from @T2
/*
ID          NAME
----------- ----------
NULL        NULL
NULL        D
2           B
2           C
3           NULL
*/
--MSSQL2000的版本用NOT EXISTS实现EXCEPT的功能
SELECT DISTINCT * from @T1 T
WHERE NOT EXISTS(SELECT 1 from @T2 WHERE ID=T.ID AND [NAME]=T.[NAME])
/*
ID  


相关文档:

SQL Server2005表分区

 ---//创建分区
CREATE PARTITION FUNCTION MarketInfo_Bak_partfunc(int)
AS RANGE RIGHT
FOR VALUES (10000,25000,40000)
--//创建分区架构
CREATE PARTITION SCHEME MarketInfo_Bak_partscheme
  AS PARTITION MarketInfo_Bak_partfunc
  TO (fg1, fg2, fg3, fg4) --//fg1...fg4文件组名
--//对表进 ......

防止SQL注入

一、使用参数化输入。存储过程里尽量避免语句拼接。
二、对于一些数据库,必须设置权限,甚至设置到字段。
三、始终通过测试类型、长度、格式和范围来验证用户输入。
四、过滤敏感字符。
Function ReplaceStr(Str)
Str=Trim(Str)
Str=Replace(Str,"'","'")
Str=Replace(Str,";",";")
Str=Rep ......

这样的sql,我却做到了。

 这是一个CSDN Oracle开发版块里,网友问过的一道题
题如下
create table A_TEST
(
PAYOUT_ITEM_CODE VARCHAR2(30) not
null,
FORMULA_DET VARCHAR2(1000)
)
create table B_TEST
(
ELEMENT_ID VARCHAR2(5) not null,
NAME VARCHAR2(41)
)  
求写oracle多个字符替换(有测试数据)
inser ......

SQL Server中的Null值解析

NULL
是数据库中特有的数据类型,当一条记录的某个列为
NULL
,则表示这个列的值是未知的、是不确定的。既然是未知的,就有无数种的可能性。因此,
NULL
并不是一个确定的值。
这是
NULL
的由来、也是
NULL
的基础,所有和
NULL
相关的操作的结果都可以从
NULL
的概念推导出来。
判断一个字段是否为
NULL
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号