Oversigt :i denne øvelse lærer du, hvordan du bruger SQLite GLOB
operatør for at bestemme, om en streng matcher et bestemt mønster.
Introduktion til SQLite GLOB
operatør
GLOB
operatoren ligner LIKE
operatør. GLOB
operatoren bestemmer, om en streng matcher et bestemt mønster.
I modsætning til LIKE
operatør, GLOB
operatoren skifter mellem store og små bogstaver og bruger UNIX-jokertegnene. Derudover er GLOB
mønstre har ikke escape-tegn.
Det følgende viser jokertegnene brugt med GLOB
operatør:
- Jokertegnet (*) matcher et vilkårligt antal tegn.
- Spørgsmålstegnet (?) jokertegnet matcher nøjagtigt ét tegn.
Ud over disse jokertegn kan du bruge listens jokertegn [] til at matche et tegn fra en liste over tegn. For eksempel [xyz]
match ethvert enkelt x-, y- eller z-tegn.
Listens jokertegn tillader også en række tegn, f.eks. matcher [a-z] ethvert enkelt lille bogstav fra a til z. [a-zA-Z0-9]
mønster matcher ethvert enkelt alfanumerisk tegn, både små bogstaver og store bogstaver.
Desuden kan du bruge tegnet ^
i begyndelsen af listen for at matche ethvert tegn undtagen ethvert tegn på listen. For eksempel [^0-9]
mønster matcher ethvert enkelt tegn undtagen et numerisk tegn.
SQLite GLOB
eksempler
Følgende sætning finder spor, hvis navne starter med strengen Man
. Mønsteret Man*
matcher enhver streng, der starter med Man
.
SELECT
trackid,
name
FROM
tracks
WHERE
name GLOB 'Man*';
Code language: SQL (Structured Query Language) (sql)
Prøv det
Følgende sætning får de spor, hvis navne slutter med Man
. Mønsteret *Man
matcher enhver streng, der ender med Man
.
SELECT
trackid,
name
FROM
tracks
WHERE
name GLOB '*Man';
Code language: SQL (Structured Query Language) (sql)
Prøv det
Den følgende forespørgsel finder de spor, hvis navne starter med et enkelt tegn (?), efterfulgt af strengen ere
og derefter et vilkårligt antal tegn (*).
SELECT
trackid,
name
FROM
tracks
WHERE
name GLOB '?ere*';
Code language: SQL (Structured Query Language) (sql)
Prøv det
For at finde de numre, hvis navne indeholder numre, kan du bruge listens jokertegn [0-9]
som følger:
SELECT
trackid,
name
FROM
tracks
WHERE
name GLOB '*[1-9]*';
Code language: SQL (Structured Query Language) (sql)
Prøv det
Eller for at finde de spor, hvis navn ikke indeholder noget nummer, indsætter du tegnet ^
i begyndelsen af listen:
SELECT
trackid,
name
FROM
tracks
WHERE
name GLOB '*[^1-9]*';
Code language: SQL (Structured Query Language) (sql)
Prøv det
Følgende sætning finder de spor, hvis navne slutter med et nummer.
SELECT
trackid,
name
FROM
tracks
WHERE
name GLOB '*[1-9]';
Code language: SQL (Structured Query Language) (sql)
Prøv det
I denne øvelse har du lært, hvordan du bruger SQLite GLOB
operatør for at teste, om en streng matcher et bestemt mønster.