2016-05-04 11 views
0

Ich habe HeidiSQL und ich habe eine 3MB Abfrage, die ich ausführen muss, aber ich möchte bestimmte Text/Werte durch eine zufällige Zahl ersetzen. Wie würde ich das tun?Wie ersetzt man Text in SQL durch eine Zufallszahl?

und ich muss es ersetzen, weil es viele Zeilen gibt.

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) 

Also im Grunde möchte ich nur ersetzen, wo @ CGUID + ist und nur eine Zufallszahl (preferabbly zwischen 1-999999) hinzuzufügen. Deshalb wäre es auf die aktuelle Nummer hinzufügen zu sein wie:

‚4820940‘ ‚2850331‘ ‚2854962‘

Hinweis jede letzte Ziffer ist nicht zu ändern, es ist nur der erste Text, der ersetzt hat wird. Aber ich brauche es zufällig.

+0

nur bestätigen: Sie müssen das tun, weil Sie Daten verschlüsseln müssen? –

+0

Da HeidiSQL nur ein Tool ist, kann ich auch wissen, welche Datenbank Sie profilieren/verwalten: MySQL, SQLServer oder Postgres? –

+0

@Chris willkommen in SO. Sie müssen uns ein bisschen mehr Informationen geben, wenn Sie posten. Wie sieht Ihre Anfrage aus? Auf welche DB willst du zugreifen? Was hast du schon versucht? –

Antwort

0

Wenn Sie mit MySQL oder SQL Server, eine Weise zu tun, so sein würde:

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

Wenn Sie Ihre Abfrage zeigen, könnte ich Ihnen helfen.

Basierend auf Ihrem SQL-Befehl könnten Sie etwas wie dieses versuchen. Ich vereinfacht Ihre Abfrage nur Syntax zeigen:

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

Ja, ich benutze MySQL. Aber du wirst mir meinen Mangel an Wissen vergeben müssen. Ich bin mir nicht sicher, was ich dort alles ausfüllen soll. Ich möchte den Text '@ CGUID +' ersetzen. Aber es gibt 5k Zeilen und ich möchte, dass alle eine Zufallszahl haben. – Chris

+0

OK, bitte stellen Sie Ihre Frage zu der Frage und zeigen Sie einige Beispiele für die Ersetzungen, die Sie vornehmen möchten. –

+0

kann ich nicht. Die Abfrage ist 3 MB und viel zu lang. Es gibt 5990 Zeilen. Kann ich es posten? – Chris

0

Führen Sie den INSERT INTO-Anweisung, wie Sie in Ihrer Frage gezeigt haben. Anschließend führen Sie die folgende Abfrage:

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