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

SQL常见查询问题(编程)


有些常见的问题在论坛中不断出现,不妨整理一下。
以下语句是在SQLServer2005上实现的,一些语句无法在SS2000上执行。
有用指数是我根据这个问题的常见程度打的分,仅供参考。实际上,当你遇到了这个问题,这个问题哪怕再少见,解决方案也是非常有用的。
1. 生成若干行记录
有用指数:★★★★★
常见的问题类型:根据起止日期生成若干个日期、生成一天中的各个时间段
《SQL Server 2005技术内幕:T-SQL查询》作者建议在数据库中创建一个数据表:
SQL code
--自然数表1-1M
CREATE TABLE Nums(n int NOT NULL PRIMARY KEY CLUSTERED)
--书上介绍了很多种填充方法,以下是最高效的一种,需要SS2005的ROW_NUMBER()函数。
WITH B1 AS(SELECT n=1 UNION ALL SELECT n=1), --2
B2 AS(SELECT n=1 from B1 a CROSS JOIN B1 b), --4
B3 AS(SELECT n=1 from B2 a CROSS JOIN B2 b), --16
B4 AS(SELECT n=1 from B3 a CROSS JOIN B3 b), --256
B5 AS(SELECT n=1 from B4 a CROSS JOIN B4 b), --65536
CTE AS(SELECT r=ROW_NUMBER() OVER(ORDER BY (SELECT 1)) from B5 a CROSS JOIN B3 b) --65536 * 16
INSERT INTO Nums(n)
SELECT TOP(1000000) r from CTE ORDER BY r
有了这个数字表,可以做很多事情,除上面提到的两个外,还有:生成一批测试数据、生成所有ASCII字符或UNICODE中文字符、等等。
经常有高手使用SELECT number from master..spt_values WHERE type = 'P',这是很妙的方法;但这样只有2048个数字,而且语句太长,不够方便。
总之,一个数字辅助表(10万还是100万根据个人需要而定),你值得拥有。
-------------------------------------------------------------------------------
2. 日历表
有用指数:★★★☆☆
《SQL编程风格》一书建议一个企业的数据库应该创建一个日历表:
SQL code
CREATE TABLE Calendar(
date datetime NOT NULL PRIMARY KEY CLUSTERED,
weeknum int NOT NULL,
weekday int NOT NULL,
weekday_desc nchar(3) NOT NULL,
is_workday bit NOT NULL,
is_weekend bit NOT NULL
)
GO
WITH CTE1 AS(
SELECT
date = DATEADD(day,n,'19991231')
from Nums
WHERE n <= DATEDIFF(day,'19991231','20201231')),
CTE2 AS(
SELECT
date,
weeknum = DATEPART(week,date),
weekday = (DATEPART(weekday,


相关文档:

SQL Server中DateTime格式转换

SQL使用convert来取得datetime日期数据,以下实例包含各种日期格式的转换,
可以通过查询语句及查询结果来显示不同的格式,如果是Date格式也可以用:
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2 ......

SQL面试题(转载)

SQL面试题(1)
create table testtable1
(
id int IDENTITY,
department varchar(12)
)
select * from testtable1
insert into testtable1 values('设计')
insert into testtable1 values('市场')
insert into testtable1 values('售后')
/*
结果
id department
1   设计
2   市场
3& ......

SQL SERVER定义操作员数据恢复

定义操作员
SQL Server代理完成一个作业后,通知操作员的方法有多种。
例如,通过命令系统把相应的消息写入Windows NT事件日志中,以便通知系统管理员反复读取此日志。
另外一种更好的选择就是使用电子邮件、传呼机或网络传送把警报消息通知给操作员。操作员是SQL Server代理发送消息的接收者,操作员可以在一个作业之前 ......

SQL Server全文索引的个人总结(上) 关于中文分词


SQL Server全文索引的个人总结(上) -关于中文分词
(2005-11-14 04:29:44)
转载
 
分类:深度研究
大家都知道LIKE查询很慢,全文索引就是事先做好相关的索引,表示哪个主题词可以在哪些记录里找到,甚至事先计算好RANK,检索时可以把相关度高的先列出来,这可以大大提高检索的速度。
打个比方,你有 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号