Det er ikke de helt vildt streng funktioner, der findes i T-SQL (okay, måske bliver jeg klogere, når jeg får sat mig mere ind i T-SQL udvidelserne i SQL Server 2005, men i hvert fald ikke i SQL Server 2000). Men selv med de simple funktioner kan man lave nogle små fikse ting, hvis det bliver sat rigtigt sammen. I det følgende skal vi finde ud af, hvor mange gange et bestemt ord findes i en kolonne.
Vi har følgende table:
CREATE TABLE tbl_Demo (
DemoID INT,
Description VARCHAR(8000)
)
I den tabel vil vi finde ud af hvor mange gange order "server" i hver rækkes Description felt. Det kan gøres på følgende måde:
SELECT Description, (LEN(Description) - LEN(REPLACE(Description, 'server', ''))) / LEN('server') AS WordCount
FROM tbl_Demo
Vi tager kort fortalt længden af Description feltet inkl. alle gange order "server" måtte optræde, og trækker længden af Description feltet uden ordet "server" fra. For at finde antallet af gang ’server’ indgår dividerer vi dette tal med længden af "server".
Ved også at bruge udtrykket i en Order By kan vores statement tilmed bruges som en søgefunktion, der sortere de mest relevante resultater øverst:
SELECT Description, (LEN(Description) - LEN(REPLACE(Description, 'server', ''))) / LEN('server') AS WordCount
FROM tbl_Demo
ORDER BY WordCount DESC
Måske ikke lige frem optimalt hvad angår performance, men trods alt en prioriteret søgning.