1.把某个字段重新生气序列(从1到n):
DECLARE @i int
Set @i = 0
Update Table1 Set @i = @i + 1,Field1 = @i
2.按成绩排名次
Update 成绩表
Set a.名次 = (
Select Count(*) + 1
From 成绩表 b
Where a.总成绩 < b.总成绩
)
From 成绩表 a
3.查询外部数据库
Select a.*
From OpenRowSet('Microsoft.Jet.OLEDB.4.0','c:\test.mdb';'admin';'',Table1) a
4.查询Excel文件
Select *
From OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...Sheet1$
5.在查询中指定排序规则
Select * From Table1 order By Field1 COLLATE Chinese_PRC_BIN
为什么要指定排序规则呢?参见:页尾
例,检查数据库中的Pub_Users表中是否存在指定的用户:
Select Count(*) From Pub_Users Where [UserName]='admin' And [PassWord]='aaa' COLLATE Chinese_PRC_BIN
默认比较是不区分大小写的,如果不加COLLATE Chinese_PRC_BIN,那么密码aaa与AAA是等效的,这当然与实际不符.注意的是,每个条件都要指定排序规则,上例中用户名就不区分大小写.
6.Order By的一个小技巧
order By可以指定列序而不用指定列名,在下面的例子里说明它的用处(注意,第三列未指定别名)
Select a.ID,a.Name,(Select Count(*) From TableB b Where a.ID=b.PID) From TableA a order By 3
附: SQLSERVER的排序规则
是SQLSERVER的排序规则的问题,它认为-是连字符,解决方法是指定二进制排序规则
create table #tmp (s varchar(10));
insert into #tmp values ('f2-49');
insert into #tmp values ('f2-50');
insert into #tmp values ('f-25');
select * from #tmp order by s COLLATE Chinese_PRC_BIN;--指定排序规则为Chinese_PRC_BIN
drop table #tmp;
结果集为
f-25
f2-49
f2-50
下表列出了 SQL 排序规则名称。
排序次序 ID SQL 排序规则名称
30 SQL_Latin1_General_Cp437_BIN
31 SQL_Latin1_General_Cp437_CS_AS
32 SQL_Latin1_General_Cp437_CI_AS
33 SQL_Latin1_General_Pref_CP437_CI_AS
34 SQL_Latin1_General_Cp437_CI_AI
40 SQL_Latin1_General_Cp850_BIN
41 SQL_Latin1_General_Cp850_CS_AS
42 SQL_Latin1_General_Cp850_CI_AS
43 SQL_Latin1_General_Pref_CP850_CI_AS
44 SQL_Latin1_General_Cp850_CI_AI
49 SQL_1Xcompat_CP850_CI_AS
50 Latin1_General_BIN
51 SQL_Latin1_General_Cp1_CS_AS
52 SQL_Latin1_General_Cp1_CI_AS
53 SQL_Latin1_General_Pref_CP1_CI_AS
54 SQL_Latin1_General_Cp1_CI_AI
55 SQL_AltDiction_Cp850_CS_AS
56 SQL_AltDiction_Pref_CP850_CI_AS
57 SQL_AltDiction_Cp850_CI_AI
58 SQL_Scandinavian_Pref_Cp850_CI_AS
59 SQL_Scandinavian_Cp850_CS_AS
60 SQL_Scandinavian_Cp850_CI_AS
61 SQL_AltDiction_Cp850_CI_AS
71 Latin1_General_CS_AS
72 Latin1_General_CI_AS
73 Danish_Norwegian_CS_AS
74 Finnish_Swedish_CS_AS
75 Icelandic_CS_AS
80 Hungarian_BIN(或 Albanian_BIN、Czech_BIN 等等)1
81 SQL_Latin1_General_Cp1250_CS_AS
82 SQL_Latin1_General_Cp1250_CI_AS
83 SQL_Czech_Cp1250_CS_AS
84 SQL_Czech_Cp1250_CI_AS
85 SQL_Hungarian_Cp1250_CS_AS
86 SQL_Hungarian_Cp1250_CI_AS
87 SQL_Polish_Cp1250_CS_AS
88 SQL_Polish_Cp1250_CI_AS
89 SQL_Romanian_Cp1250_CS_AS
90 SQL_Romanian_Cp1250_CI_AS
91 SQL_Croatian_Cp1250_CS_AS
92 SQL_Croatian_Cp1250_CI_AS
93 SQL_Slovak_Cp1250_CS_AS
94 SQL_Slovak_Cp1250_CI_AS
95 SQL_Slovenian_Cp1250_CS_AS
96 SQL_Slovenian_Cp1250_CI_AS
104 Cyrillic_General_BIN(或 Ukrainian_BIN、Macedonian_BIN)
105 SQL_Latin1_General_Cp1251_CS_AS
106 SQL_Latin1_General_Cp1251_CI_AS
107 SQL_Ukrainian_Cp1251_CS_AS
108 SQL_Ukrainian_Cp1251_CI_AS
112 Greek_BIN
113 SQL_Latin1_General_Cp1253_CS_AS
114 SQL_Latin1_General_Cp1253_CI_AS
120 SQL_MixDiction_Cp1253_CS_AS
121 SQL_AltDiction_Cp1253_CS_AS
124 SQL_Latin1_General_Cp1253_CI_AI
128 Turkish_BIN
129 SQL_Latin1_General_Cp1254_CS_AS
130 SQL_Latin1_General_Cp1254_CI_AS
136 Hebrew_BIN
137 SQL_Latin1_General_Cp1255_CS_AS
138 SQL_Latin1_General_Cp1255_CI_AS
144 Arabic_BIN
145 SQL_Latin1_General_Cp1256_CS_AS
146 SQL_Latin1_General_Cp1256_CI_AS
153 SQL_Latin1_General_Cp1257_CS_AS
154 SQL_Latin1_General_Cp1257_CI_AS
155 SQL_Estonian_Cp1257_CS_AS
156 SQL_Estonian_Cp1257_CI_AS
157 SQL_Latvian_Cp1257_CS_AS
158 SQL_Latvian_Cp1257_CI_AS
159 SQL_Lithuanian_Cp1257_CS_AS
160 SQL_Lithuanian_Cp1257_CI_AS
183 SQL_Danish_Pref_Cp1_CI_AS
184 SQL_SwedishPhone_Pref_Cp1_CI_AS
185 SQL_SwedishStd_Pref_Cp1_CI_AS
186 SQL_Icelandic_Pref_Cp1_CI_AS
192 Japanese_BIN
193 Japanese_CI_AS
194 Korean_Wansung_BIN
195 Korean_Wansung_CI_AS
196 Chinese_Taiwan_Stroke_BIN
197 Chinese_Taiwan_Stroke_CI_AS
198 Chinese_PRC_BIN
199 Chinese_PRC_CI_AS
200 Japanese_CS_AS
201 Korean_Wansung_CS_AS
202 Chinese_Taiwan_Stroke_CS_AS
203 Chinese_PRC_CS_AS
204 Thai_BIN
205 Thai_CI_AS
206 Thai_CS_AS
210 SQL_EBCDIC037_CP1_CS_AS
211 SQL_EBCDIC273_CP1_CS_AS
212 SQL_EBCDIC277_CP1_CS_AS
213 SQL_EBCDIC278_CP1_CS_AS
214 SQL_EBCDIC280_CP1_CS_AS
215 SQL_EBCDIC284_CP1_CS_AS
216 SQL_EBCDIC285_CP1_CS_AS
217 SQL_EBCDIC297_CP1_CS_AS