mysql + shell 隨機字符的產生方法

存儲過程:

drop procedure if exists test;
delimiter //
CREATE PROCEDURE test()
BEGIN
declare str char(62) default 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
declare str6 char(1);
set str6 = substring(str,1+floor(rand()*61),1);
SELECT str6,LENGTH('');
END;	//
delimiter ;
CALL test();


生成小寫字母
SELECT char(round((rand())*25)+97);
生成數字或大寫字母

rand() 範圍爲0到1  注意乘25

select char(if(floor(rand()*2)=0,65+floor(rand()*25),48+floor(rand()*9)))


#!/bin/bash
#Usage:rand num
#產生順序字符的函數,可參考:
#http://bbs.chinaunix.net/viewthread.php?tid=676397&extra=page%3D1
#略加修改即可 ^_^
#此處設定的是50位以內的,過多的話,或許有問題
#
[[ $# != 1 || $1 > 50 ]]&&{ echo "Usage ${0##/*} num";exit 1; }
array=(a b c d e f g h i j k l m n o p q r s t u v \
w x y z A B C D E F G H I J K L M N O P Q R S T U V\
W X Y Z 0 1 2 3 4 5 6 7 8 9)
rand_char=${array[$((RANDOM%${#array[@]}))]}
echo $rand_char
<<:EOF
echo $RANDOM
echo ${#array[@]}   #獲取數組長度
echo ${array[0]}    #獲取數組第一個元素
echo ${array[@]} #訪問整個數組 ,@或者* 獲取整個數組
echo ${array[@]::2} # 到第二個元素
echo ${array[@]:2} # 從第二個元素開始
    #http://blog.csdn.net/qq504196282/article/details/52995101
    for s in ${array[@]}
    do
        echo $s
    done
    len="${#array[@]}"
    for((i=0;i<$len;i++))
    do
        echo "${array[$i]}"
    done
:EOF
exit
dodo(){
        echo -n ${array[$((RANDOM%${#array[@]}))]}
}
i=1
n=$1
while((i<=n));do
        dodo
        ((i++))
done 2>/dev/null
echo

army_simple_rand="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
rand_char=$(mysql -u$db_user -p$db_password -h$db_host -e "select substring('$army_simple_rand', 1+floor(rand()*61), 1);" | grep -v 'substring')
echo $rand_char


參考: http://www.cnblogs.com/zejin2008/p/5253054.html

http://biancheng.dnbcw.net/linux/350574.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章