webForumDet fria alternativet

Replace i SQL

2 svar · 301 visningar · startad av i-or

i-orMedlem sedan nov. 2001294 inlägg
#1

Jag har en sökfunktion till en databas. Sökorden ingår sedan i SQL-satser. Om någon skriver tecknet ' fungerar det inte. Alltså måste jag ersätta ' med ''. Problemet är att informationen i databasen kan innehålla ' (jag har inte ersatt ' när jag skriver till databasen).

Alltså vill jag ersätta även ' i databasen, men enbart i SQL-satserna för sökfunktionen.

d = Replace(Request.Form("place"),"'","''")
Show = "SELECT * FROM Tabell WHERE Replace(Place,''','''') = " & "'" & d & "'"

Denna kod funkar desvärre inte. Hur gör jag?

i-orMedlem sedan nov. 2001294 inlägg
#2

Jag provade att ta bort Replace i SQL satsen:

d = Replace(Request.Form("place"),"'","''")
Show = "SELECT * FROM Tabell WHERE Place = " & "'" & d & "'"

och då fungerade det.

Väldigt konstigt enligt mig. Det betyder att
don''t = don't

Någon som har en förklaring?

LarsGMedlem sedan dec. 200012 464 inlägg
#3

Det är bara i sql-satsen som man behöver ange två apostrofer. Man har valt det sättet för att ange att en sträng innehåller en apostrof. Det skulle lika gärna kunna vara vilket tecken som helst t.ex. \ som används i C.

Om din select ser ut så här

SELECT * FROM Tabell WHERE Place = 'O''leafy'

så kommer databashanteraren att använda

O'leafy

när den gör sökningen.

Så om du gör replace på det som ligger i databasen så blir jämförelsen

O''Leafy = O'Leafy
122 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
120 ms — hämta tråd, inlägg och bilagor (db)