利用SQL生成随机字符串,在网上搜索了一下,各人有各人的实现方式,不过简单实用的实在是少。
发现最简便的方式还是:
select NEWID();
-- 或者
select RIGHT(NEWID(), 7 );
-- 或者
select RIGHT(NEWID(), 7 );
在网上查看到的另外一种方式(很费事的说):
先建立视图:
代码
/*
***** Object: View [dbo].[View_Rand] Script Date: 02/18/2011 18:48:05 *****
*/
-- 第一步,创建视图
CREATE VIEW [dbo].[View_Rand]
AS
SELECT RAND() AS frand
GO
-- 自定义的随机函数
Create FUNCTION [dbo].[Random]
(
@n int
)
RETURNS int
AS
BEGIN
select @n = @n * frand from dbo.View_Rand
RETURN @n
END
-- Description: < 随机字符串, , >
Create FUNCTION [dbo].[RandString]
(
@m int
)
RETURNS varchar( 8000 )
AS
BEGIN
DECLARE @l int ,@i int ,@r varchar( 8000 ),@s varchar( 8000 )
set @l = 0
set @r = ''
while @l < @m
begin
set @i = @m / 10 + dbo.Random(@m * 9 / 10 ) + 1
if @i + @l > @m
set @i = @m - @l
set @s = space(@i)
set @s = replace(@s, ' ' , char ( 33 + dbo.Random( 90 )))
set @r = @r + @s
set @l = @l + @i
end
RETURN @r
END
-- 测试
select dbo.RandString( 10 )
-- 第一步,创建视图
CREATE VIEW [dbo].[View_Rand]
AS
SELECT RAND() AS frand
GO
-- 自定义的随机函数
Create FUNCTION [dbo].[Random]
(
@n int
)
RETURNS int
AS
BEGIN
select @n = @n * frand from dbo.View_Rand
RETURN @n
END
-- Description: < 随机字符串, , >
Create FUNCTION [dbo].[RandString]
(
@m int
)
RETURNS varchar( 8000 )
AS
BEGIN
DECLARE @l int ,@i int ,@r varchar( 8000 ),@s varchar( 8000 )
set @l = 0
set @r = ''
while @l < @m
begin
set @i = @m / 10 + dbo.Random(@m * 9 / 10 ) + 1
if @i + @l > @m
set @i = @m - @l
set @s = space(@i)
set @s = replace(@s, ' ' , char ( 33 + dbo.Random( 90 )))
set @r = @r + @s
set @l = @l + @i
end
RETURN @r
END
-- 测试
select dbo.RandString( 10 )