Avatar billede hnteknik Novice
06. juni 2005 - 15:13 Der er 7 kommentarer og
1 løsning

Søge hele ord i tekststrenge i MS SQL 2000 ?

Jeg eller brugerne har brug for at udsøge 'hele' ord i åbne tekststrenge i en sql database:

Altså  er 'Mor' indeholdt i 'Farmor,Mormor,Far,Søster'

Her skal Mormor eller Farmor ikke trigge.

Jeg tænke om man kan bruge regular expressions her. Kan man det og hvordan.
Et eks. ville være dejligt.

Henrik
Avatar billede hnteknik Novice
06. juni 2005 - 15:19 #1
Har umidelbart fundet dette på nettet, men kan det implementeres på en SQL server hos en ISPer:

http://www.miningtools.net/regexp/documentation.aspx
Avatar billede dr_chaos Nybegynder
06. juni 2005 - 22:05 #2
Det jeg har fundet på nettet har været noget ligende det du selv har fundet.
Hvis du vil have en løsning som ikke kræver noget installeret hos host/isp så skal du lave et simpel program som er i stand til at behandle de åbne strenge.
Avatar billede ldanielsen Nybegynder
07. juni 2005 - 12:17 #3
Du skal først og fremmest definere hvad et ord er. Man kunne sige at et ord er omgivet af mellemrum. Men det er ikke nok, det kan også være omgivet af komma eller punktum eller andre tegn. Dette vil du også skulle tage stilling til i RegExp.

Man kunne jo lave det sådan

SELECT * FROM Tbl WHERE REPLACE(REPLACE(' ' + Fld + ' ', ',', ' '), '.', ' ') LIKE '% Mor %'

Denne tager kun hensyn til komma og punktum, og er ret tung at køre, så jeg vil ikke anbefale den på større datamængder
Avatar billede hnteknik Novice
07. juni 2005 - 13:45 #4
jeg er faldet over dette http://www.sqlteam.com/item.asp?ItemID=13947

Det må være muligt at lave en function, som kan do the trick:

SELECT zone1
    FROM dbo.response
    WHERE dbo.fn_whole_word("Mor",zone1)
Avatar billede hnteknik Novice
07. juni 2005 - 14:36 #5
>Idanielsen

Jeg har selv lagt ud med løsninger ala din er er også bange for at sløve det ned  pga datamængden. Jeg tror at regular expressions via en function er den mest effektive løsning. Selvom jeg har brugt det meget i Access sammenhæng, er det nyt for mig i MS SQL sammen hæng. Må hjem og lave en mug-up
Avatar billede hnteknik Novice
07. juni 2005 - 14:38 #6
en regexp som f.eks. \bMor\b vil fiske de strings ud, hvor Mor står som et helt ord. Det skal blot ned i en function.
Avatar billede hnteknik Novice
10. juni 2005 - 10:49 #7
Jeg lukker og opsummerer sagen. Jeg var nået til at lave en UDF function som håndterede Regular Expressions, men blev stoppet af ISP, da adgangen til vbscripts kræver sa admin adgang til den delte SQL Server, og det fik jeg ikkeee.

Jeg lavede en mellemting, som SQL 2000 kan anvendte:

select * from tbl where zone1 in '%[,.:; ]Mor[,.:; ]%'

Det kræver blot i mit tilfælde, at jeg sætter " " i begge ender af tekststrengen for at få ord i start og slut med. Mangler et <null> eller kunne have OR et det.

Regexp må vente til SQL 2005
Avatar billede hnteknik Novice
10. juni 2005 - 10:51 #8
in skulle selvfølgelig være LIKE
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