小妹请教如何生成九位的随机密码!

wangtiantian23 2010-04-22 04:49:38
今天我接到一个任务,要生成一个九位的随机密码!

要数字0-9 字母 A-F

随机取这里面的字母和数字。只要九位。

请问各位前辈应该如何去做!我确实没做过这方面开发!
...全文
422 42 打赏 收藏 转发到动态 举报
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
卡卡_苏米 2011-12-22
  • 打赏
  • 举报
回复
随机函数生成的话 应该很简单吧
永生天地 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 wangtiantian23 的回复:]
LEFT(newid(),9);
right(newid(),9);
两者有什么区别!
[/Quote]
查一下就知道了

SELECT newid() [1],left(NEWID(),9)[2],RIGHT(NEWID(),9)[3]

1 2 3
------------------------------------ ------------------ ------------------
C77A22B9-858B-43DB-AC6A-D5ECE7B7B74C D25EED1E- 3B8515CDC
老黎 2010-04-23
  • 打赏
  • 举报
回复
我觉得东升哥是神!
  • 打赏
  • 举报
回复
都这么有才
yt122656908 2010-04-23
  • 打赏
  • 举报
回复
如果使用left的话只能取8个随机数!
yt122656908 2010-04-23
  • 打赏
  • 举报
回复
一个是从小到大排序,一个是从大到小排序。我觉得是这个样子的。顺便问下newid()是一个基于16进制随机取值的函数对吗?
东那个升 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 wangtiantian23 的回复:]
LEFT(newid(),9);
right(newid(),9);
两者有什么区别!
[/Quote]

一个从左边开始去,一个右边
cailee 2010-04-23
  • 打赏
  • 举报
回复
select left(replace(newid(),'-',''),9)
wangtiantian23 2010-04-23
  • 打赏
  • 举报
回复
LEFT(newid(),9);
right(newid(),9);
两者有什么区别!
东那个升 2010-04-23
  • 打赏
  • 举报
回复
http://www.sqlservercentral.com/articles/SQL+Puzzles/2878/

CREATE PROCEDURE dbo.uspCreatePassword(
@UpperCaseItems SMALLINT--指定含有的大写个数
, @LowerCaseItems SMALLINT--指定含有的小写个数
, @NumberItems SMALLINT--指定含有的数字个数
, @SpecialItems SMALLINT)--指定含有的特殊字符个数
AS
SET NOCOUNT ON
DECLARE @UpperCase VARCHAR(26)
, @LowerCase VARCHAR(26)
, @Numbers VARCHAR(10)
, @Special VARCHAR(13)
, @Temp VARCHAR(8000)
, @Password VARCHAR(8000)
, @i SMALLINT
, @c VARCHAR(1)
, @v TINYINT
-- Set the default items in each group of characters
SELECT @UpperCase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
, @LowerCase = 'abcdefghijklmnopqrstuvwxyz'
, @Numbers = '0123456789'
, @Special = '!@#$%&*()_+-='
, @Temp = ''
, @Password = ''
-- Enforce some limits on the length of the password
IF @UpperCaseItems > 20
SET @UpperCaseItems = 20
IF @LowerCaseItems > 20
SET @LowerCaseItems = 20
IF @NumberItems > 20
SET @NumberItems = 20
IF @SpecialItems > 20
SET @SpecialItems = 20

-- Get the Upper Case Items
SET @i = ABS(@UpperCaseItems)
WHILE @i > 0 AND LEN(@UpperCase) > 0
SELECT @v = ABS(CAST(CAST(NEWID() AS BINARY(16)) AS BIGINT)) % LEN(@UpperCase) + 1
, @c = SUBSTRING(@UpperCase, @v, 1)
, @UpperCase = CASE
WHEN @UpperCaseItems < 0
THEN STUFF(@UpperCase, @v, 1, '')
ELSE @UpperCase
END
, @Temp = @Temp + @c
, @i = @i - 1
-- Get the Lower Case Items
SET @i = ABS(@LowerCaseItems)
WHILE @i > 0 AND LEN(@LowerCase) > 0
SELECT @v = ABS(CAST(CAST(NEWID() AS BINARY(16)) AS BIGINT)) % LEN(@LowerCase) + 1
, @c = SUBSTRING(@LowerCase, @v, 1)
, @LowerCase = CASE
WHEN @LowerCaseItems < 0
THEN STUFF(@LowerCase, @v, 1, '')
ELSE @LowerCase
END
, @Temp = @Temp + @c
, @i = @i - 1

-- Get the Number Items
SET @i = ABS(@NumberItems)
WHILE @i > 0 AND LEN(@Numbers) > 0
SELECT @v = ABS(CAST(CAST(NEWID() AS BINARY(16)) AS BIGINT)) % LEN(@Numbers) + 1
, @c = SUBSTRING(@Numbers, @v, 1)
, @Numbers = CASE
WHEN @NumberItems < 0
THEN STUFF(@Numbers, @v, 1, '')
ELSE @Numbers
END
, @Temp = @Temp + @c
, @i = @i - 1

-- Get the Special Items
SET @i = ABS(@SpecialItems)
WHILE @i > 0 AND LEN(@Special) > 0
SELECT @v = ABS(CAST(CAST(NEWID() AS BINARY(16)) AS BIGINT)) % LEN(@Special) + 1
, @c = SUBSTRING(@Special, @v, 1)
, @Special = CASE
WHEN @SpecialItems < 0
THEN STUFF(@Special, @v, 1, '')
ELSE @Special
END
, @Temp = @Temp + @c
, @i = @i - 1

-- Scramble the order of the selected items
WHILE LEN(@Temp) > 0
SELECT @v = ABS(CAST(CAST(NEWID() AS BINARY(16)) AS BIGINT)) % LEN(@Temp) + 1
, @Password = @Password + SUBSTRING(@Temp, @v, 1)
, @Temp = STUFF(@Temp, @v, 1, '')

SELECT @Password



/*

--
exec uspCreatePassword 2,2,2,2

----------
MT&4g(5j


exec uspCreatePassword 2,2,4,0

------------
38Io84Vw

*/
东那个升 2010-04-23
  • 打赏
  • 举报
回复
/**
use master

SELECT name, dbo.fn_RandomPassword(8,8) as UserPassword
FROM sysusers

dbo.fn_RandomPassword(最小长度,最大长度)
**/


--- Start vwRand ---
SET quoted_identifier ON

GO

SET ansi_nulls ON

GO

IF EXISTS (SELECT *
FROM sys.sysobjects
WHERE id = Object_id(N'[dbo].[vwRand]') and OBJECTPROPERTY(id, N'IsView') = 1)
DROP VIEW [dbo].[vwrand]

GO

--created by Rick Toner on 03/16/2007
--updated by Rick Toner on 03/16/2007
CREATE VIEW dbo.vwrand
AS
SELECT Rand() AS R

GO

SET quoted_identifier off

GO

SET ansi_nulls ON

GO
--Uncomment the below line if you need to implement security
--GRANT SELECT ON [vwRand] TO [UserAccountOrDataseRole]

--- End vwRand ---


--- Start fn_Rand ---
SET quoted_identifier ON

GO

SET ansi_nulls ON

GO

IF EXISTS (SELECT *
FROM dbo.sysobjects
WHERE id = Object_id(N'[dbo].[fn_Rand]')
AND xtype IN (N'FN',N'IF',N'TF'))
DROP FUNCTION [dbo].[fn_rand]

GO

--created by Rick Toner on 03/16/2007
--updated by Rick Toner on 03/16/2007
CREATE FUNCTION fn_rand( )
RETURNS FLOAT
AS
BEGIN
RETURN (SELECT r
FROM vwrand)
END

GO

SET quoted_identifier off

GO

SET ansi_nulls ON

GO
--Uncomment the below line if you need to implement security
--GRANT EXECUTE ON [fn_Rand] TO [UserAccountOrDataseRole]

--- End fn_Rand ---


--- Start fn_RandomPassword ---
SET quoted_identifier ON

GO

SET ansi_nulls ON

GO

IF EXISTS (SELECT *
FROM dbo.sysobjects
WHERE id = Object_id(N'[dbo].[fn_RandomPassword]')
AND xtype IN (N'FN',N'IF',N'TF'))
DROP FUNCTION [dbo].[fn_randompassword]

GO

--created by Rick Toner on 03/16/2007
--updated by Rick Toner on 03/16/2007
CREATE FUNCTION fn_randompassword
(@MinLength SMALLINT = 5,
@MaxLength SMALLINT = 8)
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @Password VARCHAR(30)
DECLARE @Length SMALLINT
DECLARE @Position SMALLINT
DECLARE @Characters VARCHAR(55)
DECLARE @LetterPosition INT
DECLARE @Letter CHAR(1)
SET @Characters = 'aeubcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ23456789'
SET @Password = ''
-- determine length
SET @Length = @MinLength
+ Round(dbo.Fn_rand()
* (@MaxLength
- @MinLength),0,0)
SET @Position = 1
WHILE @Position <= @Length
BEGIN
BEGIN
BEGIN
SET @LetterPosition = CONVERT(INT,Round((dbo.Fn_rand()
* (Len(@Characters)
- 1)),0,0),1)
+ 1
SET @Letter = Substring(@Characters,@LetterPosition,1)
SET @Password = @Password
+ @Letter
END
END
SET @Position = @Position
+ 1 -- incriment counter
END
-- return password
RETURN @password
END

GO

SET quoted_identifier off

GO

SET ansi_nulls ON

GO
--Uncomment the below line if you need to implement security
--GRANT EXECUTE ON [fn_RandomPassword] TO [UserAccountOrDataseRole]

--- End fn_RandomPassword ---


可以一次一个,也可以批量
我是小数位 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 yujunlin32167 的回复:]
引用 27 楼 cxj0062008 的回复:
SQL code
select right(newid(),9)
,学习了!学习了!超级简单!我也想在这问大家一句!这函数为什么随机字母也只有A到F呢?函数本身就是这样吗?是专门为她的这个问题而设计 的吗?呵呵

随机生成函数应该是生成16位数的函数...所以只有A-F字母[/Quote]
...哦,是的哦,应该是生成产生16进制的数的随机函数!谢谢了!一定是的!
sych888 2010-04-23
  • 打赏
  • 举报
回复
select LEFT(newid(),9);
  • 打赏
  • 举报
回复
newid()
yujunlin32167 2010-04-23
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 cxj0062008 的回复:]
SQL code
select right(newid(),9)
,学习了!学习了!超级简单!我也想在这问大家一句!这函数为什么随机字母也只有A到F呢?函数本身就是这样吗?是专门为她的这个问题而设计 的吗?呵呵
[/Quote]
随机生成函数应该是生成16位数的函数...所以只有A-F字母...
我是小数位 2010-04-23
  • 打赏
  • 举报
回复
select right(newid(),9)
,学习了!学习了!超级简单!我也想在这问大家一句!这函数为什么随机字母也只有A到F呢?函数本身就是这样吗?是专门为她的这个问题而设计 的吗?呵呵
幸运的意外 2010-04-23
  • 打赏
  • 举报
回复
select right(newid(),9)
select left(newid(), 9)
rfq 2010-04-23
  • 打赏
  • 举报
回复
select newid()
justqken 2010-04-23
  • 打赏
  • 举报
回复
学习 学习
bestboy1 2010-04-22
  • 打赏
  • 举报
回复
学习学习。
加载更多回复(22)
标题“51单片机通过MPU6050-DMP获取姿态角例程”解析 “51单片机通过MPU6050-DMP获取姿态角例程”是一个基于51系列单片机(一种常见的8位微控制器)的程序示例,用于读取MPU6050传感器的数据,并通过其内置的数字运动处理器(DMP)计算设备的姿态角(如倾斜角度、旋转角度等)。MPU6050是一款集成三轴加速度计和三轴陀螺仪的六自由度传感器,广泛应用于运动控制和姿态检测领域。该例程利用MPU6050的DMP功能,由DMP处理复杂的运动学算法,例如姿态融合,将加速度计和陀螺仪的数据进行整合,从而提供稳定且实时的姿态估计,减轻主控MCU的计算负担。最终,姿态角数据通过LCD1602显示屏以字符形式可视化展示,为用户提供直观的反馈。 从标签“51单片机 6050”可知,该项目主要涉及51单片机和MPU6050传感器这两个关键硬件组件。51单片机基于8051内核,因编程简单、成本低而被广泛应用;MPU6050作为惯性测量单元(IMU),可测量设备的线性和角速度。文件名“51-DMP-NET”可能表示这是一个与51单片机及DMP相关的网络资源或代码库,其中可能包含C语言等适合51单片机的编程语言的源代码、配置文件、用户手册、示例程序,以及可能的调试工具或IDE项目文件。 实现该项目需以下步骤:首先是硬件连接,将51单片机与MPU6050通过I2C接口正确连接,同时将LCD1602连接到51单片机的串行数据线和控制线上;接着是初始化设置,配置51单片机的I/O端口,初始化I2C通信协议,设置MPU6050的工作模式和数据输出速率;然后是DMP配置,启用MPU6050的DMP功能,加载预编译的DMP固件,并设置DMP输出数据的中断;之后是数据读取,通过中断服务程序从DMP接收姿态角数据,数据通常以四元数或欧拉角形式呈现;再接着是数据显示,将姿态角数据转换为可读的度数格

34,836

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧