/ 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
STORE og små bogstaver i en søgning
Fra : Kasper Katzmann


Dato : 07-02-03 08:54

Hvor dan gør jeg så min lille hjemmelavede søgemaskine ikke er
case-sensitiv?

Jeg har en lille søgeting på min hjemmeside som søger lokalt (på sitet). Den
gør det ved hjælp af en simpel LIKE '%søgetekst%'.

Problemet er blot at hvis jeg f.eks. skriver Kasper, så finder den godt nok
Kasper i alle siderne (og det går pæææænt stærk). Men skriver jeg kasper, så
finder den ingenting, fordi Kasper kun forekommer med stort K.

Hvordan får jeg den til at holde op med det?


Mvh
Kasper K



 
 
Thomas Smedebøl (07-02-2003)
Kommentar
Fra : Thomas Smedebøl


Dato : 07-02-03 12:10

> Hvordan får jeg den til at holde op med det?

Hvis du lægger koden her kan vi nok finde ud af noget, ellers er det svært
at se hvad man kan gøre.

Mvh Thomas



Jimmy (07-02-2003)
Kommentar
Fra : Jimmy


Dato : 07-02-03 12:15


"Thomas Smedebøl" <whisdow@hotmail.com> wrote in message
news:b2041t$q8t$1@sunsite.dk...
> > Hvordan får jeg den til at holde op med det?
>
> Hvis du lægger koden her kan vi nok finde ud af noget, ellers er det svært
> at se hvad man kan gøre.


Han har lagt koden, som er LIKE '%søgetekst%'

I MySQL kan man angive et felt som BINARY, hvorefter alle søgninger på det
felt er case-sensitive.
Hvilken database anvender du?

Mvh
Jimmy





Jens Gyldenkærne Cla~ (07-02-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 07-02-03 12:14

Kasper Katzmann skrev:

> Jeg har en lille søgeting på min hjemmeside som søger lokalt
> (på sitet). Den gør det ved hjælp af en simpel LIKE
> '%søgetekst%'.

Hvilken database?

> Hvordan får jeg den til at holde op med det?

Afhængigt af databasen kan du indstille collation (sortering) til
at være versalfølsom eller ikke-versalfølsom. Det kan i MSSQL gøres
på tabel, felt eller forespørgselsbasis. Hvis man en gang imellem
har brug for at der er forskel på store og små bogstaver skal selve
tabellens (eller feltets) collation være versalfølsom, men så kan
man bruge
WHERE navn LIKE '%tekst%' COLLATE <ikke-versalfølsom collation>

En metode der sikkert virker i lidt flere databaser er at bruge en
funktion der laver teksten om til små bogstaver. Den skal
selvfølgelig bruges både på søgeudtrykket og på feltet. Det kunne
fx se sådan ud:

   WHERE lower(navn) LIKE lower('%tekst%')

(funktionsnavnet afhænger af databasen).
--
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

Kasper Katzmann (07-02-2003)
Kommentar
Fra : Kasper Katzmann


Dato : 07-02-03 12:18

> > Jeg har en lille søgeting på min hjemmeside som søger lokalt
> > (på sitet). Den gør det ved hjælp af en simpel LIKE
> > '%søgetekst%'.
>
> Hvilken database?

Det er en Access database.


Mvh
Kasper K



Jens Gyldenkærne Cla~ (07-02-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 07-02-03 12:30

Kasper Katzmann skrev:

> Det er en Access database.

Mærkeligt - jeg troede egentlig ikke at Access understøttede
versalfølsomme søgninger. Men prøv med lower eller lcase - kan ikke
lige huske hvad der gælder hvor.
--
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

Jimmy (07-02-2003)
Kommentar
Fra : Jimmy


Dato : 07-02-03 12:49


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
news:Xns931B7F19E5C05jcdmfdk@gyrosmod.dtext.news.tele.dk...
> Kasper Katzmann skrev:
>
> > Det er en Access database.
>
> Mærkeligt - jeg troede egentlig ikke at Access understøttede
> versalfølsomme søgninger.

Jeg er af samme opfattelse.

mvh
Jimmy



Jesper Nielsen (07-02-2003)
Kommentar
Fra : Jesper Nielsen


Dato : 07-02-03 15:19

> Afhængigt af databasen kan du indstille collation (sortering) til
> at være versalfølsom eller ikke-versalfølsom. Det kan i MSSQL gøres
> på tabel, felt eller forespørgselsbasis.

Hvor(dan) gør man det??

--
Mvh. Jesper



Jens Gyldenkærne Cla~ (07-02-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 07-02-03 17:09

Jesper Nielsen skrev:

> Hvor(dan) gør man det??

I en forespørgsel:

   SELECT *
   FROM kontaktpersoner
   WHERE navn LIKE 'Peter%' COLLATE Danish_Norwegian_CS_AS

I en feltdefinition:

CREATE TABLE [kontaktpersoner] (
   [Navn] [nvarchar] (80) COLLATE Danish_Norwegian_CI_AI NULL ,
   [login] [varchar] (16) COLLATE Danish_Norwegian_CI_AI NOT NULL
   ...
)


På en database:

CREATE DATABASE testCol
COLLATE Danish_Norwegian_CS_AS
--
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

Jesper Nielsen (07-02-2003)
Kommentar
Fra : Jesper Nielsen


Dato : 07-02-03 18:16

> CREATE TABLE [kontaktpersoner] (
> [Navn] [nvarchar] (80) COLLATE Danish_Norwegian_CI_AI NULL ,
> [login] [varchar] (16) COLLATE Danish_Norwegian_CI_AI NOT NULL

Så vidt jeg forstod på dit tidligere indlæg, så sørger COLLATE for, at
feltet ikke er case sensitive. Hvis man ønsker, at feltet skal være case
sensitive, hvordan gør man så?

--
Mvh. Jesper



Jens Gyldenkærne Cla~ (07-02-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 07-02-03 19:09

Jesper Nielsen skrev:

> Så vidt jeg forstod på dit tidligere indlæg, så sørger COLLATE
> for, at feltet ikke er case sensitive.

Nej - COLLATE specificerer blot en sortering (collation) - som så
kan være versalfølsom eller ikke. Skriver man ikke COLLATE bruges
den standardsortering der er valgt ved oprettelsen af
feltet/tabellen/databasen.

Collationnavne i SQL-server består af en startdel (fx
DANISH_NORWEGIAN) der bestemmer hvilken grundsortering
(landeområde) der anvendes, og en slutdel (fx _BIN, _CI_AI, _CI_AS)
som fortæller hvordan små tegnforskelle skal fortolkes. _BIN
betyder binær sortering, _CI = case insensitive, _CS = case
sensitive, _AI = accent insensitive (é = e), _AS = accent
sensitive.
--
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

Jesper Nielsen (07-02-2003)
Kommentar
Fra : Jesper Nielsen


Dato : 07-02-03 22:15

> Nej - COLLATE specificerer blot en sortering (collation) - som så
> kan være versalfølsom eller ikke. Skriver man ikke COLLATE bruges
> den standardsortering der er valgt ved oprettelsen af
> feltet/tabellen/databasen.

Nå på dén måde.
Tak for forklaringen

--
Mvh. Jesper



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408936
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste