最新IBM水货笔记本价格,详细点击进入

查看完整版本: 如何利用SQL查询返回庞大的整数序列表

风舞残阳 2008-4-2 17:54

如何利用SQL查询返回庞大的整数序列表

[size=3][/size]WITHDigitsAS(
SELECT0asNumber
UNIONSELECT1
UNIONSELECT2
UNIONSELECT3
UNIONSELECT4
UNIONSELECT5
UNIONSELECT6
UNIONSELECT7
UNIONSELECT8
UNIONSELECT9
)
SELECT
(d5.Number*100000)
+(d4.Number*10000)
+(d3.Number*1000)
+(d2.Number*100)
+(d1.Number*10)
+d0.NumberasNumber
FROM
DigitsASd0
,DigitsASd1
,DigitsASd2
,DigitsASd3
,DigitsASd4
,DigitsASd5
在[wiki]SQL[/wiki]Server2005中,这个SQL返回一个包含1000000条记录的结果集,从0到999999。
这条语句利用了SQL2005的新功能:CTE(CommonTableExpression)
如果当前的[wiki]数据库[/wiki]是SQL2000或其他不支持CTE的数据库,则可以将WITH部分的SQL定义为一个视图。
CREATEVIEW.[Digits]AS
SELECT0ASNumber
UNIONSELECT1
UNIONSELECT2
UNIONSELECT3
UNIONSELECT4
UNIONSELECT5
UNIONSELECT6
UNIONSELECT7
UNIONSELECT8
UNIONSELECT9;
CREATEVIEW[MillionNumbers]AS
SELECT
SELECT(d5.Number*100000)
+(d4.Number*10000)
+(d3.Number*1000)
+(d2.Number*100)
+(d1.Number*10)
+d0.Number)asNumber
FROM
DigitsASd0
,DigitsASd1
,DigitsASd2
,DigitsASd3
,DigitsASd4
,DigitsASd5;

我们可以用这个方法来生成大批量的测试数据。如:
INSERTINTOMyTest(RecordId,RecordIndex)
SELECTnewid(),NumberFROMMillionNumbers
用此方法插入数据,要比利用循环快很多倍。
页: [1]
查看完整版本: 如何利用SQL查询返回庞大的整数序列表