常用于找回密码时,系统生成随机密码的情况.
1
-- =============================================
2
-- Author: 飘渺峰
3
-- Create date: 2009-03-30
4
-- Description: 获取指定长度的随机字符串
5
-- =============================================
6
ALTER PROCEDURE Proc_GetRankString
7
@iLen INT,
8
@result VARCHAR(MAX) OUTPUT
9
10
/*
11
DECLARE @temp VARCHAR(50)
12
SET @temp = '';
13
EXEC PROC_GETRankString 15, @temp OUTPUT
14
SELECT @temp
15
*/
16
AS
17
BEGIN
18
SET @result = '';
19
DECLARE @STR VARCHAR(MAX), @INT INT, @iCount INT
20
SET @STR = ''; SET @INT = 0; SET @iCount = 0;
21
IF @ilen <= 0 SET @ilen = 8;
22
IF @ilen >=30 SET @ilen = 30;
23
24
WHILE @ilen > @iCount
25
BEGIN
26
SET @INT = CAST(CEILING(RAND() * 38) AS INT)
27
SET @STR = CASE
28
WHEN @INT = 1 THEN @STR + 'A'
29
WHEN @INT = 2 THEN @STR + 'B'
30
WHEN @INT = 3 THEN @STR + 'C'
31
WHEN @INT = 4 THEN @STR + 'D'
32
WHEN @INT = 5 THEN @STR + 'E'
33
WHEN @INT = 6 THEN @STR + 'F'
34
WHEN @INT = 7 THEN @STR + 'G'
35
WHEN @INT = 8 THEN @STR + 'H'
36
--WHEN @INT = 9 THEN @STR + 'I'
37
WHEN @INT = 10 THEN @STR + 'J'
38
WHEN @INT = 11 THEN @STR + 'K'
39
WHEN @INT = 12 THEN @STR + 'L'
40
WHEN @INT = 13 THEN @STR + 'M'
41
WHEN @INT = 14 THEN @STR + 'N'
42
WHEN @INT = 15 THEN @STR + 'O'
43
WHEN @INT = 16 THEN @STR + 'P'
44
WHEN @INT = 17 THEN @STR + 'Q'
45
WHEN @INT = 18 THEN @STR + 'R'
46
WHEN @INT = 19 THEN @STR + 'S'
47
WHEN @INT = 20 THEN @STR + 'T'
48
WHEN @INT = 21 THEN @STR + 'U'
49
WHEN @INT = 22 THEN @STR + 'V'
50
WHEN @INT = 23 THEN @STR + 'W'
51
WHEN @INT = 24 THEN @STR + 'X'
52
WHEN @INT = 25 THEN @STR + 'Y'
53
WHEN @INT = 26 THEN @STR + 'Z'
54
WHEN @INT = 27 THEN @STR + '1'
55
WHEN @INT = 28 THEN @STR + '2'
56
WHEN @INT = 29 THEN @STR + '3'
57
WHEN @INT = 30 THEN @STR + '4'
58
WHEN @INT = 31 THEN @STR + '5'
59
WHEN @INT = 32 THEN @STR + '6'
60
WHEN @INT = 33 THEN @STR + '7'
61
WHEN @INT = 34 THEN @STR + '8'
62
WHEN @INT = 35 THEN @STR + '9'
63
WHEN @INT = 36 THEN @STR + '_'
64
WHEN @INT = 37 THEN @STR + '%'
65
WHEN @INT = 38 THEN @STR + '$'
66
ELSE
67
@STR + 'A'
68
END
69
SET @iCount = @iCount + 1;
70
END
71
SET @result = @STR;
72
END
73
/*
74
转载请说明出处,谢谢
75
*/

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75
