Toon posts:

[ASP] SQL string met between erin

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik wil dus kunnen laten zoeken in een database met huizen erin die te koop zijn, nu heb ik optie 1 daar kunnen ze diverse dingen mee zoeken deze werkt!, alleen bij optie 2 werkt het niet ik krijg dan de melding dat er geen records gevonden zijn, terwijl ik zeker weet dat ze er wel zijn.

if optie = 1 then zoek.Source = "SELECT * FROM Panden WHERE " & veldnaam & " LIKE '%" & zoekstring & "%' ORDER BY id ASC"

if optie = 2 then
laag = Request.QueryString("laag")
hoog = Request.QueryString("hoog")
zoek.Source = "SELECT * FROM Panden WHERE Vraagprijs BETWEEN '%" & laag & "%' AND '%" & hoog & "%' ORDER BY id ASC"
end if

wat is er dan fout ? en hoe werken die tekens '%" & kan iemand mij daar het nut van uitleggen ?

  • Wally-S
  • Registratie: September 2001
  • Laatst online: 18:55

Wally-S

-Snowboarding is art-

Wilde ik net aan jou vragen, waar zijn die % voor??

Snow is only frozen water


Verwijderd

Topicstarter
ik weet dat het iets te maken heeft met zoeken naar een deel van een woord ofzow ... ik snap er nog niet veel van.

  • Wally-S
  • Registratie: September 2001
  • Laatst online: 18:55

Wally-S

-Snowboarding is art-

Op zaterdag 20 oktober 2001 18:45 schreef BOFH het volgende:
ik weet dat het iets te maken heeft met zoeken naar een deel van een woord ofzow ... ik snap er nog niet veel van.
Zu kunnen heb ik nog nooit van gehoord.

Effe over de 2e optie:
De variabelen laag en hoog, zijn dat numerieke waarden?
Als dat zo is moet je de ' weglaten.

Snow is only frozen water


Verwijderd

Topicstarter
alles in string's

  • Wally-S
  • Registratie: September 2001
  • Laatst online: 18:55

Wally-S

-Snowboarding is art-

Dan kan je volgens mij moeilijk between doen?
Niet?

Snow is only frozen water


  • Wally-S
  • Registratie: September 2001
  • Laatst online: 18:55

Wally-S

-Snowboarding is art-

Een getal als 20 zou dan hoger zijn dan 100.
Bij strings kijkt hij nl. vanaf het 1e character.

Snow is only frozen water


  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Als ik de volgende query doe

SELECT COL FROM T_TABLE
WHERE COL BETWEEN '%A%' AND ' %B%'

Dan gaat dit natuurlijk nooit goed.

Wildcards kunnen alleen gebruikt worden met behulp van de LIKE operator, nu moeten er inderdaad namen zijn die % bevatten. dus je moet die wildcards weghalen en dan zal het beter gaan.

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


Verwijderd

Topicstarter
Op zaterdag 20 oktober 2001 18:51 schreef ronaldmathies het volgende:
Als ik de volgende query doe

SELECT COL FROM T_TABLE
WHERE COL BETWEEN '%A%' AND ' %B%'

Dan gaat dit natuurlijk nooit goed.

Wildcards kunnen alleen gebruikt worden met behulp van de LIKE operator, nu moeten er inderdaad namen zijn die % bevatten. dus je moet die wildcards weghalen en dan zal het beter gaan.
moet ik er dan ook integers van maken ?

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Ligt eraan zijn de HOOG en LAAG integers of zijn het strings ?

edit:


Van origine dan niet wat ze op dat moment zijn, en zijn ze in geval van integers altijd integers of kan het een mengel moes zijn ? (Wat is het voor een kolom een PrimaryKey ?)

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


Verwijderd

Topicstarter
nu zijn het strings

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Dan moet je gewoon de wildcards weg halen :

SELECT * FROM T_TABLE
WHERE COL BETWEEN 'ABC' AND 'DEF'

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


Verwijderd

Topicstarter
zoek.Source = "SELECT * FROM Panden WHERE Vraagprijs BETWEEN " & laag &" AND " & hoog & " ORDER BY id ASC"

bu werkt het alleen ik blijf met de vraag wat doet

& ???
' ??
" ?
% ??

waar zijn die tekens voor ?

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Als de inhoud van de variabele een integere waarde is (Ondanks dat het type variabele string is) dan zou ik ze als integer gebruiken dus :

SELECT * FROM T_TABLE
WHERE COL BETWEEN 1 AND 100

Anders krijg je zoals hierboven genoemd word een totaal ander resultaat

20 is groter dan 100 bij een String en 20 is kleiner dan 100 bij een integere waarde.

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


  • Wally-S
  • Registratie: September 2001
  • Laatst online: 18:55

Wally-S

-Snowboarding is art-

& moet je 'altijd' voor en na variabelen zetten. (vraag niet waarom)
' daartussen komen characters
" in dit geval moeten die ertussen omdat je een variabele opgeeft.

Snow is only frozen water


Verwijderd

Topicstarter
oke thanks het werkt nu

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Veel databases kennen de volgende speciale tekens bij strings :

& ???
' ??
" ?

% is een wildcard dus bij het zoeken naar

WHERE COL LIKE '%TA%'

dan kunnen de volgende resultaten geretourneerd worden :

BATAVIA en TAND er mogen dus tekens voor en na TA staan maakt niet uit welke.

? is ook een wildcard maar dan mag er een willekeurig teken op de positie van de ? staan.

dus :

WHERE COL LIKE 'TA?RT'

geeft als resultaat

TAART
TAURT
TAORT

etc, etc, ...

de " en ' worden denk ik door verschillende databases versillend gebruikt.

Oracle gebruikt 'tekst' als volgdt :

SELECT PRIMARYKEY, 'TEST', COL FROM T_TABLE WHERE COL = 'HI';

Dit geeft als resultaat :

1, 'TEST', HI
2, 'TEST', HI

En Oracle gebruikt "tekst" als volgt :

SELECT COL "HOI" FROM T_TABLE WHERE COL = 'HI';

dan word de kolom header niet COL maar HOI.

& Ik zou zogouw niet weten wanneer dit word gebruikt in een query (kan niet zosnel testen Oracle ligt down bij mij)

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


Verwijderd

Topicstarter
wouw wist ik allemaal niet dankje! :9

  • Wally-S
  • Registratie: September 2001
  • Laatst online: 18:55

Wally-S

-Snowboarding is art-

Die % is ook nieuw voor mij.
Thanx altijd handig.

Snow is only frozen water


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Even voor de duidelijkheid, we hebben het hier over ASP (vbscript) en niet over Oracle (correct me if i'm wrong).

En dan kom je op de volgende uitleg van de tekens (sommige zaken zijn al eerder uitgelegd):

& = string-concatenation (aan elkaar plakken van strings)
bijv:
var1 = "world"
var2 = "hello " & var1
(var2 bevat nu de string "hello world")


" = scheidingsteken van strings in vbscript
zie voorbeeld hierboven

' = scheidingsteken van strings in SQL
bijv:
SELECT * FROM tabel WHERE veld='deze string'


' = remark teken in vbscript (commentaarregels)
bijv:
var1 = 1
var2 = 2
' dit stukje tekst is commentaar en wordt niet uitgevoerd
var3 = 3


% = wildcard voor LIKE (nul of meerdere willekeurige karakters)
bijv:
SELECT * FROM tabel WHERE veld LIKE 'A%'
(geeft alle rows terug waar veld begint met een A)


En dat allemaal gecombineerd kan dan zoiets worden:
code:
1
2
3
4
5
6
<%
' opmerking: alle namen ophalen die beginnen met de waarde die in de var letter zit
dim letter, sql
letter = "A"
sql = "SELECT naam FROM tabel WHERE naam LIKE '" & letter & "%'"
%>

/disclaimer:
ik hoop dat het een beetje duidelijk is, uitleggen is niet mijn sterkste kant :o

Today's subliminal thought is:


  • disjfa
  • Registratie: April 2001
  • Laatst online: 12-05 15:11

disjfa

be

en wat nou als je om de 50 rsts wilt vinden? :r

disjfa - disj·fa (meneer)
disjfa.nl


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Op zondag 21 oktober 2001 04:16 schreef disjfa het volgende:
en wat nou als je om de 50 rsts wilt vinden? :r
:?

Today's subliminal thought is:


Verwijderd

Topicstarter
ik zat dus met die if, then functie maar hoe maak ik nou een IF ... Then ... Else functie ?? ik krijg alsmaar syntax errors.

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

code:
1
2
3
4
5
6
7
8
9
<%
if blaat > 100 then
    ' code
    ' code
else
    ' code
    ' code
end if
%>

Today's subliminal thought is:

Pagina: 1