天天@BLOG

脖子越来越疼,脑袋越来越钝
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SQL语句统计

Posted on 2006-01-26 11:53  天天在线  阅读(340)  评论(1)    收藏  举报

-- 测试数据
CREATE TABLE tb(col varchar(100))
INSERT tb SELECT 'abced'
UNION ALL SELECT 'ilieb'
UNION ALL SELECT 'lkjiioe'
UNION ALL SELECT 'ia0lka'
GO

-- 统计: 字段信息中有 a的 数据是多少,有 b的数据是多少,有e的数据是多少 依次类推....
SELECT TOP 8000
id = identity(int,1,1)
INTO # FROM syscolumns a, syscolumns b
SELECT id1 = SUBSTRING(a.col, b.id, 1), id2 = COUNT(*)
FROM tb a, # b
WHERE LEN(a.col) >= b.id
GROUP BY SUBSTRING(a.col, b.id, 1)
ORDER BY SUBSTRING(a.col, b.id, 1)
DROP TABLE #
GO
/*--结果
id1  id2        
---- -----------
0    1
a    3
b    2
c    1
d    1
e    3
i    5
j    1
k    2
l    3
o    1

(所影响的行数为 11 行)
--*/

-- 如何取到字段中任何一个字符都不相同的数据
SELECT TOP 8000
id = identity(int,1,1)
INTO # FROM syscolumns a, syscolumns b

SELECT * FROM tb
WHERE col NOT IN(
SELECT col
FROM(
SELECT a.col, id1 = SUBSTRING(a.col, b.id, 1)
FROM tb a, # b
WHERE LEN(a.col) >= b.id
)A GROUP BY col, id1
HAVING COUNT(*) > 1)
DROP TABLE #
GO
/*--结果
col
--------------------
abced

(所影响的行数为 1 行)
--*/


-- 删除测试
DROP TABLE tb

@忙碌,不代表有效率;方法,远胜于苦干