如何用SQL中的随机数替换文本?

时间:2016-05-04 23:38:48

标签: sql heidisql

我有HeidiSQL,我需要运行3MB查询,但我想用随机数替换某些文本/值。我该怎么做?

我需要更换它,因为有很多行。

INSERT INTO creature (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `VerifiedBuild`) VALUES
('@CGUID+0', 83855, 1116, 0, 0, 3, '0', 0, 0, 0, 1504.222, -2147.853, 90.73972, 0.6455684, 7200, 10, 0, 0, 0, 1, 0, 0, 0, 21463), -- 83855 (Area: 7120) (possible waypoints or random movement)
('@CGUID+1', 81244, 1116, 0, 0, 3, '0', 0, 0, 0, 1514.845, -2106.458, 92.60474, 2.908402, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 21463), -- 81244 (Area: 7120) (Auras: 163908 - 163908)
('@CGUID+2', 81244, 1116, 0, 0, 3, '0', 0, 0, 0, 1484.29, -2122.714, 92.58028, 1.293478, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 21463), -- 81244 (Area: 7120) (Auras: 163908 - 163908)

所以基本上我想替换@ CGUID +的位置,只需添加一个随机数(优先在1-999999之间)。因此,它会将当前数字添加到:

'4820940' '2850331' '2854962'

注意每个最后一个数字都没有变化,它只是被替换的第一个文本。但我需要它是随机的。

2 个答案:

答案 0 :(得分:0)

如果您使用的是MySQL或SQLServer,那么这样做的方法就是这样:

SELECT Replace(real_field1,'value to be replaced','new value') as scrambled_field1
FROM <any table>
WHERE <filter>

如果您显示查询,我可以帮助您。

根据您的SQL命令,您可以尝试这样的事情。我只是为了显示语法而简化你的查询:

insert into table(column1) values (REPLACE('@CGUID+1','@CGUID',FLOOR(RAND()*(99999-1)+1))

答案 1 :(得分:0)

运行您在问题中显示的INSERT INTO语句。 然后运行以下查询:

UPDATE creature
    SET guid = REPLACE(guid, '@CGUID+', ROUND((RAND() * (999999-1))+1))
    WHERE guid LIKE '@CGUID+%'