-- 测试数据
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

相关文章: