/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
[SQL] LIKE '%tekst%' virker ikke
Fra : Steen Eiler Jørgense~


Dato : 05-05-03 20:01

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

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste