2016-05-04 5 views
0

У меня есть HeidiSQL, и у меня есть 3MB-запрос, который мне нужно запустить, но я хотел бы заменить определенный текст/значения на случайное число. Как мне это сделать?Как заменить текст на случайное число в SQL?

, и мне нужно его заменить, потому что есть много строк.

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 + это и просто добавить случайное число (preferabbly между 1-999999). Поэтому было бы добавить на текущий номер, чтобы быть похожим:

«4820940» «2850331» «2854962»

Примечание каждая последняя цифра не меняется, это только первый текст, который заменяется. Но мне нужно, чтобы это было случайным.

+0

Просто, чтобы подтвердить: вам нужно сделать, потому что вам нужно зашифровать данные? –

+0

Кроме того, поскольку HeidiSQL - это только инструмент, могу ли я узнать, какая база данных вы профилируете/управляете: MySQL, SQLServer или Postgres? –

+0

@ Chris добро пожаловать в SO. вам нужно дать нам немного больше информации, когда вы публикуете. как выглядит ваш запрос? к какой БД вы пытаетесь получить доступ? Что вы уже пробовали? –

ответ

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)) 
+0

Да, я использую MySQL. Но вам придется простить мне недостаток знаний. Я не уверен, что все там заполнить. Я хочу в основном заменить текст «@ CGUID +». Но есть как 5k строк, и я хочу, чтобы все они имели случайное число. – Chris

+0

Хорошо, пожалуйста, поместите свой вопрос на вопрос и покажите несколько примеров замещений, которые вы хотите сделать. –

+0

Я не могу. Запрос составляет 3 МБ и слишком длинный. Есть 5990 строк. Могу ли я опубликовать его? – Chris

0

Запустите INSERT INTO заявления, как вы показали в своем вопросе. Затем выполнить следующий запрос:

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