关于SQL生成随机字符串
2011-02-18 18:49
253 查看
利用SQL生成随机字符串,在网上搜索了一下,各人有各人的实现方式,不过简单实用的实在是少。
发现最简便的方式还是:
select NEWID();
--或者
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)
发现最简便的方式还是:
select NEWID();
--或者
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)
相关文章推荐
- SQL生成n位随机字符串
- 生成随机字符串的SQL实现
- 问题求解,关于java随机生成指定长度的字符串
- sql生成随机字符串
- sql-server2005下生成定长的随机字符串
- SQL生成随机字符串
- SQL生成n位随机字符串
- 生成随机字符串
- 【matlab】关于批量随机生成数据和批量保存运行结果
- 通过bash命令生成足够随机的秘钥字符串
- php使用str_shuffle()函数生成随机字符串的方法分析
- Java中各种随机字符串生成的方法(亲测)
- 随机生成36位字符串
- 生成n位随机字符串
- 生成随机字符串和验证码的类的PHP实例
- php 生成随机字符串
- 关于C# 的高效随机字符串
- java随机生成字符串
- 生成随机字符串
- sql 生成随机密码