Avatar billede pnr Nybegynder
30. juni 2005 - 09:36 Der er 16 kommentarer og
2 løsninger

Mærkelig problem ved søgning med vildcard

Hvis jeg laver følgende søgning i min table:

SELECT *
FROM test
WHERE vaerdie LIKE '%klima%'

Får jeg jeg intet resultat, det er på trods af at der findes en post i databasen med værdien "klimaanlæg", Hvis jeg så søger på "%klim%" virker det fint. Retter jeg teksten "klimaanlæg" i tabellen til "klima" kan jeg godt søge på "%klima%".

Jeg har så prøvet at lave forskellige andre kombinationer med ord som virker fint, men så snart at jeg har en post der indeholder "klima" + virker det ikke ....

Nogen der kan forklare mig hvorfor?
Avatar billede pnr Nybegynder
30. juni 2005 - 09:37 #1
Hvis jeg iøvrigt skriver "klima anlæg" virker det også fint :-/
Avatar billede arne_v Ekspert
30. juni 2005 - 09:38 #2
det lyder meget mystisk

eneste tanke er om din collation betragter aa=å og at det laver ged i det
Avatar billede teepee Nybegynder
30. juni 2005 - 09:39 #3
Har du dansk/nordisk codetype på din database? Så er aa = å og klimaanlæg er klimånlæg. Prøv for sjov skyld at søge på 'klimå'
Avatar billede pnr Nybegynder
30. juni 2005 - 09:45 #4
Min database står til Danish_Norwegian_CI_AS

Søger jeg på "klimå" får jeg heller intet resultat :-/
Avatar billede pnr Nybegynder
30. juni 2005 - 10:04 #5
Jeg har nu prøvet at lave en database med Collation name: SQL_Latin1_General_CI_AS og der er ingen problemer. Så det har åbenbart noget med der danske tegnsæt at gøre. Hvordan kan jeg undgå problemet, uden at skulle konventer min database til et andet sprog?
Avatar billede teepee Nybegynder
30. juni 2005 - 11:07 #6
en af mine kolleger nævnte at man kan benytte tvungen collation ved sql afvikling, måske at arne_v kender til dette og kan forklare?
Avatar billede pnr Nybegynder
30. juni 2005 - 11:12 #7
En løsning er meget velkommen :-)
Avatar billede arne_v Ekspert
30. juni 2005 - 11:13 #8
prøv:

SELECT *
FROM test
WHERE vaerdie LIKE '%klima%'
COLLATE SQL_Latin1_General_CI_AS
Avatar billede pnr Nybegynder
30. juni 2005 - 11:22 #9
Det virker ikke så godt den informere om følgende:

Incorrect syntax near the kayword 'COLLATE'
Avatar billede arne_v Ekspert
30. juni 2005 - 11:25 #10
hvilken SQLServer version ?
Avatar billede pnr Nybegynder
30. juni 2005 - 11:27 #11
SQL2000
Avatar billede arne_v Ekspert
30. juni 2005 - 11:47 #12
sært - BOL har:

SELECT *
FROM TestTab
WHERE GreekCol = LatinCol COLLATE greek_ci_as

jeg ville have troet at når man kunne sætte COLLATE på = kunne man også på LIKE
Avatar billede ldanielsen Nybegynder
30. juni 2005 - 12:35 #13
Det skal være:

SELECT * FROM test WHERE vaerdie LIKE '%klima%'
COLLATE Latin1_General_CI_AS
Avatar billede ldanielsen Nybegynder
30. juni 2005 - 12:38 #14
Skriv

SELECT *
FROM ::fn_helpcollations()

- i Query analyzer, så får du en liste over brugbare collations, der kan være lidt forskellig fra server til server
Avatar billede pnr Nybegynder
30. juni 2005 - 15:50 #15
Idanielsens kommentar virkede :-)

Er det eneste problem ved en sådan løsning hvis der skal sorteres med hensyn til (æ, ø og å)? eller kan der være andre problemer?
Avatar billede pnr Nybegynder
01. juli 2005 - 06:18 #16
Nu fatter jeg slet ingen ting... Ville lige teste på søgningen inden jeg tilrettede den også virkede den lige pludselig. Hvad kan der være sket i nat siden det lige pludselig virker som det skal?
Avatar billede pnr Nybegynder
03. august 2005 - 11:30 #17
idanielsen, smid et svar så lukker vi den her.
Avatar billede ldanielsen Nybegynder
09. august 2005 - 08:15 #18
OK
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester