webForumDet fria alternativet

Ändra i väldigt många poster

Databaser & SQL

8 svar · 602 visningar · startad av Inferis

Medlem sedan sep. 2000667 inlägg
Frågan#1

Jag har en databas full med länkar. Nu behöver jag få bort en bit av dess URL på sina ställen.

Kan någon tipsa mig hur jag bäst går till väga?

Antingen ändra i själva sökningen eller ändra i posterna?
Problemet är att det finns flera olika länkar, det är bara en av sidorna som länkas som jag behöver ändra.

Exempel:

https://www.a.com/index.php?id=2323232323 (ska vara som den är)

https://www.b.com/index.php?id=121212 ska bli till https://www.b.com/?id=121212
(samt alla länkar med https://www.b.com/?id=någotvärde)

Så här kollar jag om länkarna finns i databasen innan jag lägger in dem;

SQL = "SELECT * FROM lankar WHERE Lank = '"& Request.form("lank") &"'  "
Set Rs = Connection.Execute(SQL)

Vilket sätt är bäst att gå?

Medlem sedan juni 200032 967 inlägg
#2

Kör en update.

Fast det beror ju kanske på vilken dbms du använder.

UPDATE lankar SET Lank = Replace(Lank, "/index.php?", "/?") 
WHERE Lank LIKE '%[url]www.b.com/index.php?%[/url]'

mvh

Medlem sedan sep. 2000667 inlägg
#3

Kör mySQL, ska testa.

Medlem sedan juni 200032 967 inlägg
#4

För att kolla resultatet innan du kör frågan kan du ju alltid göra motsvarande SELECT:

SELECT Replace(Lank, "/index.php?", "/?") AS Lank FROM lankar
WHERE Lank LIKE '%[url]www.b.com/index.php?%[/url]'
Medlem sedan sep. 2000667 inlägg
#5

Fick följande fel:

Microsoft VBScript compilation error '800a0408'

Invalid character

/uppdateradb.asp, line 6

SQL = "UPDATE lankar SET Lank = Replace(Lank, "/index.php?", "/?")
---------------------------------------------------------^

Medlem sedan juni 200032 967 inlägg
#6

Förlåt. Det ska ju vara apostrofer. Vet inte riktigt hur det blev så där.

UPDATE lankar SET Lank = Replace(Lank, '/index.php?', '/?') 
WHERE Lank LIKE '%[url]www.b.com/index.php?%[/url]'
Medlem sedan aug. 20039 340 inlägg
#7

Snabel-anders har rätt att det ska vara apostrofer i SQL. Men jag kan tillägga att om du någon sin behöver stoppa ett citattecken i en sträng i VB.net så finns det sätt att göra det. Normalt sett så slutar ju strängen där det står ett citattecken, men du kan avbryta detta genom att sätta in dubbla citattecken.

str = "Denna sträng innehåller såna där ""citattecken"" mitt i strängen."
Medlem sedan sep. 2000667 inlägg
#8

Det fungerade perfekt!

Tack för hjälpen!

Medlem sedan juni 200032 967 inlägg
#9

Men jag kan tillägga att om du någon sin behöver stoppa ett citattecken i en sträng i VB.net så finns det sätt att göra det.

Samma sak i VB-Script för gamla ASP, eftersom det verkar vara det du använder.

mvh

253 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
116 ms — ändringar (db)