如何在sql中生成随机的十六进制颜色?

Mr *_*edi 17 sql random hex

对我来说这是一个非常难的话题,因为SQL不是我最好的技能;)

我必须将随机的十六进制颜色插入数据库行.我该怎么做?是否可以创建绘制数字的函数?

小智 27

SET [Color] =  '#' +  CONVERT(VARCHAR(max), CRYPT_GEN_RANDOM(3), 2)
Run Code Online (Sandbox Code Playgroud)


jbr*_*ahy 17

下面介绍的逻辑包含在MySQL的一个函数中.它非常易于使用.

mysql> select random_color();
+----------------+
| random_color() |
+----------------+
| #8F50B4        |
+----------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

它可以一遍又一遍地调用,每次都会有不同的颜色.

CREATE FUNCTION `random_color`() RETURNS char(7) CHARSET latin1 DETERMINISTIC
BEGIN
 DECLARE str CHAR(7);
 SET str = concat('#',SUBSTRING((lpad(hex(round(rand() * 10000000)),6,0)),-6));
 RETURN str;
END;
Run Code Online (Sandbox Code Playgroud)

这将为您提供MySQL中的六位十六进制数字代码

SELECT concat('#',SUBSTRING((lpad(hex(round(rand() * 10000000)),6,0)),-6))
Run Code Online (Sandbox Code Playgroud)

这是一个很棒的颜色

SELECT *, 
       concat('#',SUBSTRING((lpad(hex(@curRow := @curRow + 10),6,0)),-6)) AS color 
FROM table 
       INNER JOIN (SELECT @curRow := 5426175) color_start_point
Run Code Online (Sandbox Code Playgroud)


Ed *_*eal 0

猜猜你需要使用 rand - https://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_rand - 即

INSERT INTO ... VALUES ( ... , ROUND(RAND(255 * 255 * 255)), ...)
Run Code Online (Sandbox Code Playgroud)