sql中定义了一个CHAR36的字段,现在想让他自己生成6个字符,要唯一的。怎么写语句
发布网友
发布时间:2022-05-14 03:19
我来回答
共3个回答
热心网友
时间:2024-02-23 05:45
SQL SERVER 这样产生6位随机字符,可以复制行来增加位数,试试吧
SELECT
SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789A',CONVERT(INT,FLOOR(RAND()*36+1)),1)
+SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789A',CONVERT(INT,FLOOR(RAND()*36+1)),1)
+SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789A',CONVERT(INT,FLOOR(RAND()*36+1)),1)
+SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789A',CONVERT(INT,FLOOR(RAND()*36+1)),1)
+SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789A',CONVERT(INT,FLOOR(RAND()*36+1)),1)
+SUBSTRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789A',CONVERT(INT,FLOOR(RAND()*36+1)),1)
热心网友
时间:2024-02-23 05:45
把问题归纳一下;就是要生成6位不重复的字符串?
请问,对字符串里的字符有什么限定吗?比如:
可以包括:数字、小写英文字母、大写英文字母,标点符号等等,有什么具体*?
另外,你说的用语句,是指用VB还是用??????追问随机的6个大写字符串,是用SQL语句,在insert into S(ID ,name, tel) values()时,VALUES中实现
追答Sorry!
热心网友
时间:2024-02-23 05:46
使用的function实现的。你看下吧。
CREATE FUNCTION `GET_ID`()
RETURNS varchar(100)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE v_seed varchar(100);
DECLARE v_flag int(2);
DECLARE v_str varchar(100);
SET v_str = '';
SET v_flag = 0;
SET v_seed = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789A';
WHILE v_flag < 6
DO
SET v_str = concat(v_str, substr(v_seed, FLOOR(rand() * 36+1), 1));
SET v_flag = v_flag + 1;
END WHILE;
RETURN v_str;
END追问没有看明白,能不能具体说明一点啊。
追答不就是你想要的6位长度的随机码吗?
用v_flag记录当前是第几位,默认值是0.
用v_str记录生成的随机码,默认值为空串。
生成的随机码是从v_seed所包含的字符串中生成。
中间有个循环,条件就是v_flag<6,因为你要的是6位的。
当条件满足,则从v_seed串中随机截取一位,存放到v_str中,修改v_flag变量的值,继续循环,直到循环不满足条件,此时v_str中就存放了6位随机生成的码。将v_str返回就是要的结果。