Vastus: MS Access ei paku täielikku toetust regulaaravaldiste kasutamisele, kuid selle LIKE predikaadi mustrite koostamise võimalusi on laiendatud
regulaaravaldistest tuntud võimalustega. Kui on valitud
File => Options => Object Designers => Query design => SQL Server Compatible Syntax (ANSI 92) => This database(
Fail => Suvandid => Objektikujundajad => Päringu kujundus => SQL Serveriga ühilduv süntaks (ANSI 92) => See andmebaas), siis * asemel tuleb kasutada % ja ? asemel _
MS Accessi andmebaasi saab lokaliseerida (konkreetse keele keskkonnaga kohandada), määrates andmebaasis tekstiliste väärtuste sorteerimiseks kasutatava keele:
Fail=>Suvandid=>Üldist=>Uue andmebaasi sortimisjärjestusFile=>Options=>General=>New database sort orderKonkreetse andmebaasi puhul kasutatav keel määrab, milliste märkide vahemikku tuleks mustri koostamisel kasutada.
Eesti tähestiku esimene täht on
A ja viimane täht on
Y.
Kui andmebaasis on sorteerimise keeleks
eesti keel, siis lisan tabelis
Isik veerule
isikukood valideerimisreegli:
Not ALike '%[!A-Y0-9 +=/\-]%'
Isikukood ei tohi olla selline, kus sisaldub mõni lubatud märkide hulka mittekuuluv märk. Hüüumärk tähistab Accessis selles kontekstis eitust - ei kuulu loetletud märkide hulka.
[!A-Y0-9 +=/\-]
Nii tähistatakse märkide hulka, kuhu kuulub üks märk. Selles märkide hulgas on kõik märgid, mis ei ole tähemärgid, numbrimärgid, tühik, plussmärk, võrdusmärk, kaldkriips, sidekriips.
Kui andmebaasis on sorteerimise keeleks määratud
general e
inglise keel, siis lisan tabelis
Isik veerule
isikukood valideerimisreegli, sest
inglise tähestiku esimene täht on A ja viimane Z:
Not ALike '%[!A-Z0-9 +=/\-]%'
Võrdluseks - PostgreSQLis ja Oracles tuleks kasutada regulaaravaldist
'^[[:alnum:] +=-\/\]*$'
. Alates stringi algusest (^) kuni lõpuni ($) peab selles olema null või rohkem(*) nurksulgudes kirjeldatud märkide hulka kuuluvat märki. [[:alnum:]] on eeldefineeritud märkide klass, kuhu kuuluvad tähed ja numbrimärgid. PostgreSQLis oleks CHECK kitsenduse tingimus
isikukood~
'^[[:alnum:] +=-\/\]*$'
~ on operaator tõstutundlikuks (
case sensitive) regulaaravaldise mustrile vastavuse kontrollimiseks.
Oracles oleks CHECK kitsenduse tingimus
REGEXP_LIKE(isikukood,
'^[[:alnum:] +=-\/\]*$'
)
REGEXP_LIKE on funktsioon regulaaravaldise mustrile vastavuse kontrollimiseks.