webForumDet fria alternativet

Sökfunktion

ASPur ASP

4 svar · 502 visningar · startad av UrMe

Medlem sedan apr. 2001762 inlägg
Frågan#1

Om jag har en databas med 10 kolumner som man ska kunna söka i med en vanlig input ruta så har jag skrivit SQL frågan så här.

SQL = "Select * From tabell where falt1 LIKE '%" & sokord & "%' OR falt2 LIKE '%" & sokord & "%' OR falt3 LIKE '%" & sokord & "%' OR falt4 LIKE '%" & sokord & "%'"

ända upp till falt10..

Men nu fungerar det ju bara med ett ord.. om jag istället vill kanske skriva in "blå, bil" i sökrutan.. så vill jag att "blå" och "bil" ska vara oberoende av varandra. Kanske falt10 är "blå" och falt2 är "bil". Nu när jag skriver in "blå, bil" så får jag ju ingen träff.. därför vill jag splitta upp strängen när det är ett "," eller ett annat lämpligt tecken.

Men hur skriver jag SQL frågan isåfall? Det kan ju lika bra vara 4-5 ord som det ska sökas på.

Medlem sedan juni 20019 519 inlägg
#2

jag hade nog gjort en split som du talar om och kanske köra en "standard" sträng som loopars igenom split:en och lägga in det i hela SQL frågan exmpel:

dim splitedWords
splitedWords = split(strSearchWord,",")
for i = 0 to ubound(splitedWords)
  sql = sql & " falt1 like '%" &splitedWords(i) "%'...."
next
Medlem sedan apr. 2001762 inlägg
#3

Tackar ska prova det där!

Om man vill använda sig av "AND" och "OR" istället för t.ex ";" så borde det på något liknande sätt va?

"blå AND bil AND stor" eller "blå OR svart AND bil"

Hur splittar man en sådan sträng bäst?

Medlem sedan apr. 2001762 inlägg
#4

Måste få hjälp att skriva for loopen till denna grej.

Om jag ska söka på "Blåa bilar är snygga".

Hur skriver jag då for loopen om jag vill att sql frågan ska se ut så här:

falt1 like '%Blåa%' AND falt1 like '%bilar%' AND falt1 like '%är%' AND falt1 like '%snygga%' OR falt2 like '%Blåa%' AND falt2 like '%bilar%' AND falt2 like '%är%' AND falt2 like '%snygga%'

Alltså antingen falt1 eller falt2 måste innehålla alla de där orden, fast i databasen kan det ju stå "Snygga bilar är blåa".

Någon som är bra på detta? Har kört fast totalt hur jag ska skriva en for loop för att jag ska få frågan så där.

		dim splitedWords
		splitedWords = split(sokord," ")
		for i = 0 to ubound(splitedWords)
		  sql = sql & " falt1 like '%" &splitedWords(i)&"%'"
		next
Medlem sedan apr. 2001762 inlägg
#5

Detta borde väl fungera? Ser ut att göra det iallafall :)

		for i = 0 to ubound(splitedWords)
		  sql = sql & " falt1 like '%"&splitedWords(i)&"%'"
		  If i = ubound(splitedWords) Then
				sql = sql & " OR"
		  else
				sql = sql & " AND"
		  End If
		next

		for i = 0 to ubound(splitedWords)
		  sql = sql & " falt2 like '%"&splitedWords(i)&"%'"
		  If i = ubound(splitedWords) Then
				sql = sql & " OR"
		  else
				sql = sql & " AND"
		  End If
		next

		for i = 0 to ubound(splitedWords)
		  sql = sql & " falt3 like '%"&splitedWords(i)&"%'"
		  If i = ubound(splitedWords) Then
				sql = sql & ""
		  else
				sql = sql & " AND"
		  End If
		next
138 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)