Avatar billede dax-30 Nybegynder
28. maj 2002 - 14:26 Der er 10 kommentarer og
1 løsning

Rettelse i tabel

Jeg har en SQL tabel, hvor et af felterne indeholder :
http://100.200.1.20/mcscript/msgframe.asp?MSGNUM=21
Nu vil jeg altså gerne have ændret den IP-addr til en anden IP.
Jeg kan selvfølgelig gå ind manuelt og ændre den, men der er altså over 10.000, så .......
Det er kun IP'en der skal ændres, resten bagved skal beholdes.
Jeg kunne forstille mig at man kunne vælge at kun erstatte de første 18 char ???
Men hvordan kan det gøres ??
Avatar billede slash Nybegynder
28. maj 2002 - 14:28 #1
du kan bruge select substring og replace
Avatar billede dax-30 Nybegynder
28. maj 2002 - 14:45 #2
Kan du uddybe det lidt mere, jeg er ikke den helt store ørn til det SQL ?
Avatar billede slash Nybegynder
28. maj 2002 - 14:50 #3
noget a la følgende... er ej testet..
declare @var1 varchar(100)
declare @var2 varchar(100)
select @var1 = substring(dato, 1, 10) from test
select @var2 = replace(@var1, @var1,'sdf')
select @var1 = substring(dato, 18,len(dato)) from test
print @var2+@var1 /*update tabel set ipfelt = @var1+@var2 where bla. bla.*/
Avatar billede slash Nybegynder
28. maj 2002 - 14:51 #4
select @var1 = substring(dato, 1, 10) from test skal være:
select @var1 = substring(dato, 1, 18) from test

Kig evt. i sql-server books online.....
Avatar billede dax-30 Nybegynder
28. maj 2002 - 15:45 #5
Hvad peger test på ? Jeg kan sige at hele den ovenstående sætning ligger i DeliveryURL i databasen. altså et felt i stringen ?
Avatar billede slash Nybegynder
28. maj 2002 - 15:50 #6
test er bare tabellen jeg tester på!!


declare @var1 varchar(100)
declare @var2 varchar(100)
select @var1 = substring(<ditfeltmed_IP>, 1, 10) from <dintabel>
select @var2 = replace(@var1, @var1,'<din nye ip adresse>')
select @var1 = substring(dato, 18,len(<ditfeltmed_IP>)) from <dintabel>

print @var2+@var1

/*update <dintabel> set <ditfeltmed_IP> = (@var1+@var2) where bla.*/
Avatar billede dax-30 Nybegynder
28. maj 2002 - 16:12 #7
Kan jeg få lov at sende dig en mail ???
Nu har jeg prøvet, men jeg får kun indsat den nye IP, jeg beholder ikke det der stod bagefter ? Jeg skriver sikkert noget forkert, derfor vil jeg maile dig scriptet ? Hvis det altså er iorden ??
Avatar billede slash Nybegynder
28. maj 2002 - 16:16 #8
toxictwins@sol.dk

men det er ik' sikkert jeg når at kigge på det idag!
Avatar billede tmceu Praktikant
28. maj 2002 - 17:25 #9
Her er ideen til noget kode du eks. kan stoppe i en sp:

Jeg antager at alle felter starter med 'http://' og starter derfor i position 8 og finder den første slash. Finder derefter hele strengen til venstre for den og replacer med en ny værdi, incl 'http://'

Jeg mener den er mere sikker, da ip adressen ikke altid vil være 18 karakterer.

DECLARE @POS int
DECLARE @TEMP varchar(255)

SET @POS = CHARINDEX('/', 'http://100.200.1.20/mcscript/msgframe.asp?MSGNUM=21', 8)

SET @TEMP = LEFT('http://100.200.1.20/mcscript/msgframe.asp?MSGNUM=21', @POS)

SELECT @POS
SELECT @TEMP

SELECT REPLACE('http://100.200.1.20/mcscript/msgframe.asp?MSGNUM=21', @TEMP, 'HTTP://123.123.123.123/')
Avatar billede tmceu Praktikant
28. maj 2002 - 17:26 #10
Og så skal det lige siges, at jeg for eksemplets skyld har brugt konstante værdier, men den er ret nem at lave om til at anvende dine tabeller/felter/variabler :-)
Avatar billede dax-30 Nybegynder
29. maj 2002 - 09:16 #11
Jeg takker jer mange gange for den fine hjælp.
Det virke fint nu, takker mange gange.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester