关于SQL语句Count的一点细节
count语句支持*、列名、常量、变量,并且可以用distinct关键字修饰, 并且count(列名)不会累计null的记录。下面随便用一些例子示范一下count的规则:比如对如下表做统计,所有列这里都用sql_variant类型来表示。
if (object_id ('t_test' )> 0 )
drop table t_test
go
create table t_test (a sql_variant , b sql_variant , c sql_variant )
insert into t_test select 1 , 1 , 'a'
insert into t_test select 1 , getdate (), null
insert into t_test select 'a' , null , 1
insert into t_test select 3 , null , null
insert into t_test select null , null , null
go
select * from t_test
go
select
count (* ) --总数
, count (nullif (1 , 1 )) --永远返回0
, count (a ) --a数量
, count (b) --b数量
, count (distinct a ) --a不重复数量
, count (isnull (b, c )) --b或者c不为null数量
, count (Coalesce (a , b, c )) --a或者b或者c不为null数量
, count (nullif (a , b)) --a不等于b的数量
, count (nullif (isnumeric (cast (a as varchar (38 ))), 0 ))--a是数字的数量
from t_test
相关文档:
最近做一个项目,说起来比较恶,是从另一个表中读取数据送到这个表中.而且要用触发器循环这些内容再发出去.
可是如果这个数据量很大的话,会一下子挂死.所以就想到了.能不能,每次我传一点,隔几秒再送一点.
下面是一个简单的例子
declare @i int
set @i=1
while @i<101
begin
insert into Cname ([name],csex,Number) ......
由于代码过于简单,直接贴出:
SqlDataSourceEnumerator SseInstance = SqlDataSourceEnumerator.Instance;
//ServerName:服务器名;
//InstanceName:实例名;
//IsClustered:是否为群集服务器的一部分;
//Version:版本,8.*是SQL 2000,9.*是SQL 2005
DataTable DtSqlInstance = SseInstance.GetDataSources();
注: ......
1 用UNION替换OR (适用于索引列)
通常情况下, 用UNION替换WHERE子句中的OR将会起到较好的效果. 对索引列使用OR将造成全表扫描. 注意, 以上规则只针对多个索引列有效.
如果有column没有被索引, 查询效率可能会因为你没有选择OR而降低. 在下面的例子中, LOC_ID 和REGION上都建有索引.
高效: SELECT LOC_ID , LOC_DESC , ......
/*
原表:
thid other
a 1
a 1
b 0
b 0
......
UrlScan的3.1是一个安全的工具,限制了IIS的HTTP请求将处理类型。 通过阻止特定的HTTP请求,在URLScan 3.1安全工具有助于防止对服务器应用程序可能有害的请求。 UrlScan的3.1是URLScan 2.5的更新版本。支持IIS 5.1中,IIS 6.0和IIS 7.0在Windows Vista和Windows Server 2008。下载地址http://download.csdn.net ......