ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

T-SQL: ÓÃ26¸ö×Öĸ±íʾ10000Ìõ²»Öظ´µÄ±àºÅ(Ò»)
2014-11-24 02:59:36 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:5´Î
Tags£ºT-SQL: ×Öĸ ±íʾ 10000 ÖØ¸´ ±àºÅ
T-SQL: ÓÃ26¸ö×Öĸ±íʾ10000Ìõ²»Öظ´µÄ±àºÅ
¿´µ½Ô°×ÓÀïһλÅóÓÑÓÃnewid()дµÄ
insert into T
select top 10000
replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(lower(left(replace(newid(),
'-', ''), 20)),
'0', 'a'), 1,
'b'), 2, 'c'), 3,
'd'), 4, 'e'), 5,
'f'), 6, 'g'), 7, 'h'), 8, 'i'),
9, 'j') as col
from sys.all_columns ,
sys.all_objects
ÕâÀïnewid()²úÉúÒ»¸öGUID, ÐÎÈç"F6BCE480-834B-4FB9-B905-B568B9F9C7A3", (32¸ö×ÖĸºÍÊý×Ö¼Ó4ÌõºáÏß), ÀíÂÛÉÏÊÇûÓÐÖØ¸´µÄ. ÎÊÌâÔÚÓÚ, µ±°ÑÆäÖеÄÊý×Öת»»³É×Öĸ֮ºó, ²úÉúµÄ×ÖĸÐòÁÐÖÐÒ»¸ö×Öĸ¿ÉÄܶÔÓ¦GUIDµÄÒ»¸ö×Öĸ, Ò²¿ÉÄܶÔÓ¦µÄÊÇÒ»¸öÊý×Ö. »»¾ä»°Ëµ, µ±°ÑÕâ¸ö×ÖĸÐòÁÐ"·­Òë"»ØGUIDµÄʱºò, Ëü×î¶à¿ÉÒÔ¶ÔÓ¦µ½2µÄ32´Î·½¸ö²»Í¬µÄGUID, (ÄüÆËãÆ÷ËãÁËÏÂ: 4,294,967,296¸ö). ÕâÑùÏȲ»Ëµ³öÏÖÖØ¸´µÄ¸ÅÂÊ´ó²»´ó, ÖÁÉÙÀíÂÛÉϲ»Äܱ£Ö¤Ëµ²»³öÏÖÖØ¸´µÄ.
Æäʵ, 0µ½10000, ÕâÊý×Ö±¾Éí¾ÍÊDz»Öظ´µÄ, ¸É´à°ÑËûÃÇת»»³É×Öĸ¾ÍºÃÁË. ÕâÊÇ·½·¨Ò»:
declare @n int
set @n = 0;
while @n<10000
begin
print replace(replace(convert(varchar(5), @n), '0', 'a'), '1', 'b') ---replace('2', 'c')....
set @n = @n+1
end
ÉÏÃæ¿´µ½µÄÊÇa, b, c...h, i, jÊ®¸ö×ÖĸµÄ×éºÏ, ÊDz»ÊÇ¿ÉÒÔÓÃ26¸ö×Öĸ µ±È»ÊÇ¿ÉÒÔµÄ. ²»·Á°ÑÊ®½øÖÆ×ª»»³É"¶þÊ®Áù½øÖÆ": a = 0, b = 1 .... z = 25. ÄÇô, ba = 26. ºÃ, ûÎÊÌâ, ¿ÉÒÔÕâÑù:
declare @one int, @n int, @res varchar(5)
set @n = 20 -- test
if (@n = 0) set @res = 'a';
else set @res = ''
while @n > 0
begin
set @one = @n%26
set @res = CHAR(@one+97) + @res
set @n = @n/26
end
print @res
ÉÏÃæ½â¾öÁË"¶þÊ®Áù½øÖÆ"µÄÎÊÌâ. ÎÒÃÇ»¹ÖªµÀwhileÑ­»·ÊÇ¿ÉÒÔǶÌ×µÄ, ÓÚÊÇ, ¿ÉÒÔÓÃ"¶þÊ®Áù½øÖÆ"À´±íʾ10000¸ö±àºÅ. ·½·¨¶þ:
declare @n int
set @n = 0
while @n < 10000
begin
declare @one int, @num int, @res varchar(5)
set @num = @n
if (@num = 0) set @res = 'a'
else set @res = ''
while @num>0
begin
set @one=@num%26
set @res = CHAR(@one+97) + @res
set @num = @num/26
end
print @res
set @n = @n+1
end
ÁíÍâ, SQL SERVER 2008¿ªÊ¼Ìṩ±íÖµº¯Êý:
select ch from
(
values
('a'), ('b'), ('c'), ('d'), ('e'), ('f'), ('g'),
('h'), ('i'), ('j'), ('k'), ('l'), ('m'), ('n'),
('o'), ('p'), ('q'), ('r'), ('s'), ('t'),
('u'), ('v'), ('w'), ('x'), ('y'), ('z')
) as char_table(ch)
²»·Á¿¼ÂÇÓÃ26¸ö×Öĸ×÷¸ö½»²æÁ¬½Ó, 26*26*26 = 17576, ÈýÕűí×ã¹»ÁË. ·½·¨Èý:
with chars as
( select ch from
(
values
('a'), ('b'), ('c'), ('d'), ('e'), ('f'), ('g'),
('h'), ('i'), ('j'), ('k'), ('l'), ('m'), ('n'),
('o'), ('p'), ('q'), ('r'), ('s'), ('t'),
('u'), ('v'), ('w'), ('x'), ('y'), ('z')
) as char_table(ch)
)
select a.ch, b.ch, c.ch, (a.ch+b.ch+c.ch) as rn
from chars as a
cross join chars as b
cross join chars as c
-- results
ch ch ch rn
---- ---- ---- ----
a a a aaa
a b a aba
a c a aca
a d a ada
....
¿ÉÒÔ¿´µ½Ëü´ÓµÚ¶þÁпªÊ¼µÝÔö, ÎÒÃÇÏëÈÃËü´ÓµÚÈýÁпªÊ¼:
with chars as
( select ch from
(
values
('a'), ('b'), ('c'), ('d'), ('e'), ('f'), ('g'),
('h'), ('i'), ('j'), ('k'), ('l'), ('m'), ('n'),
('o'), ('p'), ('q'), ('r'), ('s'), ('t'),
('u'), ('v'), ('w'), ('x'), ('y'), ('z')
) as char_table(ch)
),
bc as (select c1.ch as chb, c2.ch as chc from chars as c1 cross join chars as c2),
abc as (select ch as cha, chb, chc from chars cross join bc)
select top 10000 cha, chb, chc, (cha+chb+chc) as rn from abc
-- results
cha c
Ê×Ò³ ÉÏÒ»Ò³ 1 2 ÏÂÒ»Ò³ βҳ 1/2/2
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºSql:¿çÔ·ÝÎÊÌâ»ò¿çÄê·ÝÎÊÌâÈÕÆÚ.. ÏÂһƪ£ºSQL: Date Utility

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

¡¤Linuxϵͳ¼ò½é (2025-12-25 21:55:25)
¡¤Linux°²×°MySQL¹ý³Ì (2025-12-25 21:55:22)
¡¤Linuxϵͳ°²×°½Ì³Ì£¨ (2025-12-25 21:55:20)
¡¤HTTP Åc HTTPS µÄ²î„ (2025-12-25 21:19:45)
¡¤ÍøÕ¾°²È«±ØÐ޿ΣºÍ¼ (2025-12-25 21:19:42)