利用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)