|
| [SQL] LIKE '%tekst%' virker ikke Fra : Steen Eiler Jørgense~ |
Dato : 05-05-03 20:01 |
|
På http://www.w3schools.com/sql/sql_where.asp kan man læse, at
<citat>
The following SQL statement will return persons with first names that start
with an 'O':
SELECT * FROM Persons WHERE FirstName LIKE 'O%'
The following SQL statement will return persons with first names that end
with an 'a':
SELECT * FROM Persons WHERE FirstName LIKE '%a'
The following SQL statement will return persons with first names that
contains the pattern 'la':
SELECT * FROM Persons WHERE FirstName LIKE '%la%'
</citat>
....men hvad så, når man har HTML liggende i sin database? Hvis man f.eks.
har "<p>Mogens</p>" liggende i sin database, vil LIKE 'Moge%' så blive
returneret?
Jeg kan nemlig ikke få min database til at returnere noget som helst, hvis
jeg fjerner %-tegnene!
--
Steen Eiler Jørgensen
"Time has resumed its shape. All is as it was before.
Many such journeys are possible. Let me be your gateway."
| |
Steen Eiler Jørgense~ (05-05-2003)
| Kommentar Fra : Steen Eiler Jørgense~ |
Dato : 05-05-03 21:01 |
|
"Steen Eiler Jørgensen" <oz1sejREMOVETHIS@get2net.dk> wrote
> Jeg kan nemlig ikke få min database til at returnere noget som helst, hvis
> jeg fjerner %-tegnene!
Hmmm, og det var jo fordi jeg troede, at 'hej%' ville trigge på f.eks. 'Og
så sagde han hejsa til mig'. Men så indså jeg, at det manglende første
procenttegn indikerer, at HELE FELTET begynder med hej... Hvor dum kan man
være
Så lad mig da stille et lille tillægsspørgsmål:
Med kommandoen RecordSet.MoveFirst kan man f.eks. spole et recordset frem
til begyndelsen.
Men kan man også på en eller anden måde få fat i antallet af records i et
recordset? Altså:
<p>Dette recordset indeholder <% =RecordSet.NumberOfRecords %> records.</p>
???
--
Steen Eiler Jørgensen
"Time has resumed its shape. All is as it was before.
Many such journeys are possible. Let me be your gateway."
| |
Torben Brandt (05-05-2003)
| Kommentar Fra : Torben Brandt |
Dato : 05-05-03 21:18 |
|
Steen Eiler Jørgensen wrote:
> Med kommandoen RecordSet.MoveFirst kan man f.eks. spole et recordset frem
> til begyndelsen.
>
> Men kan man også på en eller anden måde få fat i antallet af records i et
> recordset? Altså:
>
> <p>Dette recordset indeholder <% =RecordSet.NumberOfRecords %> records.</p>
Prøv at se på:
<URL: http://www.devguru.com/Technologies/ado/quickref/recordset.html>
mvh Torben
| |
Steen Eiler Jørgense~ (05-05-2003)
| Kommentar Fra : Steen Eiler Jørgense~ |
Dato : 05-05-03 21:35 |
|
"Torben Brandt" <name@domain.invalid> wrote
> <p>Dette recordset indeholder <% =RecordSet.NumberOfRecords %>
records.</p>
Prøv at se på:
<URL: http://www.devguru.com/Technologies/ado/quickref/recordset.html>
Ja, det ser jo umiddelbart ud som om, at RecordSet.RecordCount er hvad jeg
leder efter... -men den returnerer bare værdien -1 selvom recordsettet
indeholder 20 records! Hvad gør jeg galt?
--
Steen Eiler Jørgensen
"Time has resumed its shape. All is as it was before.
Many such journeys are possible. Let me be your gateway."
| |
Ryan Dahl (05-05-2003)
| Kommentar Fra : Ryan Dahl |
Dato : 05-05-03 21:51 |
|
On Mon, 5 May 2003 22:35:20 +0200, "Steen Eiler Jørgensen"
<oz1sejREMOVETHIS@get2net.dk> wrote:
>Prøv at se på:
><URL: http://www.devguru.com/Technologies/ado/quickref/recordset.html>
>
>Ja, det ser jo umiddelbart ud som om, at RecordSet.RecordCount er hvad jeg
>leder efter... -men den returnerer bare værdien -1 selvom recordsettet
>indeholder 20 records! Hvad gør jeg galt?
Hej,
en alternativ måde er, at lave følgende sql-kald:
"SELECT Count(*) AS Antal FROM TabelNavn" - Så ligger antal poster i
feltet: 'Antal' i første post.
mvh
Ryan
| |
Torben Brandt (05-05-2003)
| Kommentar Fra : Torben Brandt |
Dato : 05-05-03 22:15 |
|
Steen Eiler Jørgensen wrote:
> "Torben Brandt" <name@domain.invalid> wrote
>><p>Dette recordset indeholder <% =RecordSet.NumberOfRecords %>
> records.</p>
>
> Prøv at se på:
> <URL: http://www.devguru.com/Technologies/ado/quickref/recordset.html>
>
> Ja, det ser jo umiddelbart ud som om, at RecordSet.RecordCount er hvad jeg
> leder efter... -men den returnerer bare værdien -1 selvom recordsettet
> indeholder 20 records! Hvad gør jeg galt?
Nyt link :)
<URL: http://www.asp-faq.dk/article/?id=60>
mvh Torben
| |
Jens Gyldenkærne Cla~ (05-05-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 05-05-03 22:10 |
|
Ryan Dahl skrev:
> en alternativ måde er, at lave følgende sql-kald:
> "SELECT Count(*) AS Antal FROM TabelNavn" - Så ligger antal
> poster i feltet: 'Antal' i første post.
Den metode kan anbefales. Se fx hvad 4GuysFromRolla skriver om at
tælle poster:
< http://www.4guysfromrolla.com/webtech/120898-1.shtml>
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Torben Brandt (05-05-2003)
| Kommentar Fra : Torben Brandt |
Dato : 05-05-03 23:54 |
|
Jens Gyldenkærne Clausen wrote:
> Ryan Dahl skrev:
>>en alternativ måde er, at lave følgende sql-kald:
>>"SELECT Count(*) AS Antal FROM TabelNavn" - Så ligger antal
>>poster i feltet: 'Antal' i første post.
>
> Den metode kan anbefales. Se fx hvad 4GuysFromRolla skriver om at
> tælle poster:
> < http://www.4guysfromrolla.com/webtech/120898-1.shtml>
Det er da en lang artikel uden særlig meget indhold...
Som jeg læser den, så er problemet ikke at bruge rs.RecordCount, men at
den ikke er pålidelig før man har besøgt den sidste post:
One of the problems with DAO is that you couldn't tell what the
.RecordCount was [accurately] unless you visited the end of the
recordset.
og naturligvis at man skal have den rigtige cursorType.
Er det virkelig korrekt? Og gælder det også f.eks. rs.PageCount og
andre, der bygger på hele recordsettet?
Torben
| |
Jens Gyldenkærne Cla~ (06-05-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 06-05-03 00:17 |
|
Torben Brandt skrev:
>> < http://www.4guysfromrolla.com/webtech/120898-1.shtml
> Det er da en lang artikel uden særlig meget indhold...
Det er vel som man tager den.
> Som jeg læser den, så er problemet ikke at bruge
> rs.RecordCount, men at den ikke er pålidelig før man har
> besøgt den sidste post:
....hvis man har valgt en forkert cursortype.
Hvis du bare læser pointen i artiklen står der allerøverst:
,--------
| Thou shalt use neither a "counting" loop nor .MoveLast to count the
| number of records in an ADO recordset. (either set the .CursorType
| correctly or use a Count() in SQL)
`--------
Det er altså ikke brug af recordCount der er forkert, men derimod
brug af MoveLast (dvs. en CursorType der har brug for MoveLast for
at tælle korrekt).
> Er det virkelig korrekt? Og gælder det også f.eks.
> rs.PageCount og andre, der bygger på hele recordsettet?
Så vidt jeg ved plejer < http://www.4guysfromrolla.com/> at være ret
pålidelige. Jeg ved ikke med PageCount m.fl. - men igen: husk at
der er forskel på hvilken cursortype der anvendes.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Torben Brandt (07-05-2003)
| Kommentar Fra : Torben Brandt |
Dato : 07-05-03 16:47 |
|
Jens Gyldenkærne Clausen wrote:
> Torben Brandt skrev:
>>> < http://www.4guysfromrolla.com/webtech/120898-1.shtml
>>Det er da en lang artikel uden særlig meget indhold...
> Det er vel som man tager den.
Jeg manglede måske en ":)"
>>Som jeg læser den, så er problemet ikke at bruge
>>rs.RecordCount, men at den ikke er pålidelig før man har
>>besøgt den sidste post:
>
> ...hvis man har valgt en forkert cursortype.
Nå ok, det var sådan det skulle forstås
> Så vidt jeg ved plejer < http://www.4guysfromrolla.com/> at være ret
> pålidelige. Jeg ved ikke med PageCount m.fl. - men igen: husk at
Det er jeg helt enig.
Tak for uddybelsen,
Torben
| |
Jens Gyldenkærne Cla~ (05-05-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 05-05-03 20:52 |
|
Steen Eiler Jørgensen skrev:
> ...men hvad så, når man har HTML liggende i sin database?
Set fra en databases vinkel er HTML bare almindelig tekst.
> Hvis man f.eks. har "<p>Mogens</p>" liggende i sin database, vil
> LIKE 'Moge%' så blive returneret?
Mønstret 'Moge%' vil ikke fange "<p>Mogens</p>" fordi teksten
starter med "<p>" - og ikke med "Moge".
Hvis det kun er en enkelt tekst (fx et navn) du har liggende i
feltet kan du vel blot tilføje html-koderne når du udskriver din
side - så forstyrrer de ikke under søgningen. En anden mulighed er
at lægge html-koderne i et felt for sig.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Steen Eiler Jørgense~ (05-05-2003)
| Kommentar Fra : Steen Eiler Jørgense~ |
Dato : 05-05-03 21:15 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote
> Mønstret 'Moge%' vil ikke fange "<p>Mogens</p>" fordi teksten
> starter med "<p>" - og ikke med "Moge".
Ja, det indså jeg efter et stykke tid.
> Hvis det kun er en enkelt tekst (fx et navn) du har liggende i
> feltet kan du vel blot tilføje html-koderne når du udskriver din
> side - så forstyrrer de ikke under søgningen. En anden mulighed er
> at lægge html-koderne i et felt for sig.
Mnjah, det er jo hele sider (artikler) jeg har liggende. Jeg tror
efterhånden, jeg har sjusset mig frem til, at hvis jeg ved en søgning på
"tag" vil have listet de artikler, der indeholder ordet "tagrende" men ikke
"udtag", skal jeg anvende en konstruktion a la
SELECT * FROM artikler WHERE tekst LIKE '% "&soegestreng&"%' OR tekst LIKE
'%"&">"&soegestreng&"%'
-altså: foran min søgestreng må der gerne være et " " eller et ">", men så
heller ikke mere.
Læg i øvrigt mærke til, at jeg ikke kan skrive OR tekst LIKE '%>"&soege...
da %> bliver tolket som afslutning på ASP-blokken!
Et lille "&" imellem løser det problem...
--
Steen Eiler Jørgensen
"Time has resumed its shape. All is as it was before.
Many such journeys are possible. Let me be your gateway."
| |
Jens Gyldenkærne Cla~ (05-05-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 05-05-03 22:07 |
|
Steen Eiler Jørgensen skrev:
> SELECT * FROM artikler WHERE tekst LIKE '% "&soegestreng&"%'
> OR tekst LIKE '%"&">"&soegestreng&"%'
>
> -altså: foran min søgestreng må der gerne være et " " eller et
> ">", men så heller ikke mere.
Fornuftigt nok.
> Læg i øvrigt mærke til, at jeg ikke kan skrive OR tekst LIKE
> '%>"&soege... da %> bliver tolket som afslutning på
> ASP-blokken!
[teste, teste] - du har jo ret! Tyndt (men måske nødvendigt hvis
asp i det hele taget skal kunne melde om uafsluttede strenge).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
|
|