webForumDet fria alternativet

SQL...igen....

15 svar · 325 visningar · startad av soffan76

soffan76Medlem sedan maj 2001684 inlägg
#1

Problem med SQL igen...
Jag har ett fält av datatyp text.
Jag får inte denna sträng att funka. Ska man använda LIKE eller =?
Help please!

SQL = "SELECT * from medarbetare where foretag LIKE '" & "%" & link & "%" & "'"

roadyMedlem sedan jan. 2002473 inlägg
#2

vad är det du skall söka på???
är det fritextsökning???

I sådana fall skall det stå:
SQL = "SELECT * from medarbetare where foretag LIKE '%"& link &"%'"

@ndersMedlem sedan juni 200032 969 inlägg
#3

Tja, det beror ju på? Likhetstecken om det är en exakt jämförelse du vill göra...
Du krånglar lite väl mycket med strängkonkateneringar.

SQL = "SELECT * from medarbetare where foretag LIKE '%" & link & "%'"

Grundregel 1: Skriv ut den färdiga SQL-frågan med response.write, istället för att exekvera den. Då ser du om värden saknas eller ligger fel.

soffan76Medlem sedan maj 2001684 inlägg
#4

När jag skriver Response.write.SQL blir det:
SELECT * from medarbetare where foretag LIKE '%%'

Det jag vill göra är att hämta upp ett värde från en selectbox.
Sedan hämtas denna i:
<% link = request.form("list") %>

@ndersMedlem sedan juni 200032 969 inlägg
#5

Kontrollera att listboxen heter "list" samt att du har specificerat metoden "post" i din <form>-tagg.

Är det inte en exakt jämförelse du ska ha? Använd bara LIKE när du ska göra sökningar.

Mvh,

soffan76Medlem sedan maj 2001684 inlägg
#6

Min form ser ut så här:
<form action="visa_adresslista.asp">
<select name="list">
<option value="CD">CD
<option value="CDC">CDC
<option selected value="EG">EG
<option selected value="CDL">CDL
<option value="CDN">CDN
</select>
<input type=submit value="Visa adresslista!">
</form>

@ndersMedlem sedan juni 200032 969 inlägg
#7

Du har inte angett metoden "post", då antas "get" per default, och allt skickas som querystrings.

Mvh,

soffan76Medlem sedan maj 2001684 inlägg
#8

Åh, vilket fånigt fel!
Tack ska ni ha!

soffan76Medlem sedan maj 2001684 inlägg
#9

Problem igen...
Det funkar på alla utom när jag väljer den första "CD".
Då hämtas alla poster som börjar på CD alltså CD,CDC,CDE,CDN...
Hur gör jag för att fixa detta?

OveRRidEMedlem sedan feb. 200112 078 inlägg
#10

Jag såg i ditt formulär ovan att du hade "selected" på två av valen i din select-box. Åtgärda det först, så att du garanterar en unik postning ur det elementet.

OveRRidEMedlem sedan feb. 200112 078 inlägg
#11

soffan76 skrev:

Problem igen...
Det funkar på alla utom när jag väljer den första "CD".
Då hämtas alla poster som börjar på CD alltså CD,CDC,CDE,CDN...
Hur gör jag för att fixa detta?

Givetvis. :) Det är ju så det står i koden.

% betyder ju typ "vad som helst här". Och eftersom strängen blir %CD%, kommer den ta alla rader där CD finns med antingen som en del av ett ord eller själstående.

Vill du ha att det bara skall börja på din träff, ta bort det sista %:

SQL = "SELECT * from medarbetare where foretag LIKE '%" & link & "'"

Frågan är ifall en select-box och wildcards (%) verkligen passar ihop. Brukar det inte vara så att det man väljer i selecten, alltid har en unik likhet och enbart ger en träff på nästa sida?

Typ:

SQL = "SELECT * from medarbetare where foretag = '" & link & "'"
@ndersMedlem sedan juni 200032 969 inlägg
#12

soffan76 skrev:

Problem igen...
Det funkar på alla utom när jag väljer den första "CD".
Då hämtas alla poster som börjar på CD alltså CD,CDC,CDE,CDN...
Hur gör jag för att fixa detta?

Du gör en exakt jämförelse med = istället... :o

SQL = "SELECT * from medarbetare where foretag = '" & link & "'"
UlfTMedlem sedan maj 20018 027 inlägg
#13

soffan76 skrev:

Problem igen...
Det funkar på alla utom när jag väljer den första "CD".
Då hämtas alla poster som börjar på CD alltså CD,CDC,CDE,CDN...
Hur gör jag för att fixa detta?

Det händer därför att teckenkombinationen '%CD%' inkluderar alla dessa poster. Ställ en annan SQL-fråga där du inte löper den risken. Du kanske inte behöver ha dina %-tecken i strängjämförelsen?

OveRRidEMedlem sedan feb. 200112 078 inlägg
#14

Superklasse! :e

UlfTMedlem sedan maj 20018 027 inlägg
#15

OveRRidE skrev:

Superklasse! :e

:)

soffan76Medlem sedan maj 2001684 inlägg
#16

Tack! Ni är bäst!

137 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)