首页 > 解决方案 > SQL - 使用随机 IP 地址更新所有行的列

问题描述

我的 MySQL 中有一个表table_user,其中有一列ip_address

我想ip_address用随机 IP 地址更新所有行中的值

例子,like12.345.678.90但是每个 ip_address 行必须不同才能兼容新的脚本代码,昨天我发现 312892 记录了一个 IP :)

我尝试了此 SQL,但无法使用 IP 地址。

UPDATE `table_user` SET `ip_address` = CONCAT(
    SUBSTRING('12.345.678.90', FLOOR(RAND()*26) + 1, 1),
    SUBSTRING('12.345.678.90', FLOOR(RAND()*26) + 1, 1),
    SUBSTRING('12.345.678.90', FLOOR(RAND()*26) + 1, 1),
    SUBSTRING('12.345.678.90', FLOOR(RAND()*26) + 1, 1),
    SUBSTRING('12.345.678.90', FLOOR(RAND()*26) + 1, 1),
    SUBSTRING('12.345.678.90', FLOOR(RAND()*26) + 1, 1)
);

我怎样才能做到这一点 ?

标签: mysqlsqlrandom

解决方案


这种方法应该有效:

UPDATE `table_user` SET `ip_address` = CONCAT(
    TRUNCATE( RAND() * (255 - 1 + 1) + 1, 0 ), '.',
    TRUNCATE( RAND() * (255 - 1 + 1) + 1, 0 ), '.',
    TRUNCATE( RAND() * (255 - 1 + 1) + 1, 0 ), '.',
    TRUNCATE( RAND() * (255 - 1 + 1) + 1, 0 )
)

它基本上生成从 1 到 255 的数字。TRUNCATE 函数去除了十进制数字(截断为 0 位小数)。RAND 函数生成从 0(包括)到 1(不包括)的数字。


推荐阅读