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 _
Lisan tabelis
Riik veerule
riik_kood, valideerimisreegli, mis koosneb omavahel seotud alamtingimusest, mis peavad kõik olema täidetud.
Not ALike '%[!ABCDEFGHIJKLMNOPQRSTUVWXYZ]%' And StrComp([riik_kood];UCase([riik_kood]);0)=0 And Len([riik_kood])=3
Not ALike '%[!ABCDEFGHIJKLMNOPQRSTUVWXYZ]%'
- Riigi kood ei tohi vastata mustrile, mille kohaselt on seal vähemalt üks märk, mis ei ole ABCDEFGHIJKLMNOPQRSTUVWXYZ. Need on võimalikud tähed, mida riikide koodides kasutatakse. Täpitähed ja katusega tähed sinna hulka ei kuulu. Hüüumärk (!) ütleb, et märk ei kuulu nende märkide hulka.
StrComp([riik_kood];UCase([riik_kood]);0)=0
- MS Access on stringide võrdlemisel vaikimisi tõstutundetu (
case insensitive). Seega MS Accessi jaoks on EST ja est ühesugused (võrdsed) stringid.
StrComp on MS Accessi funktsioon, mis võimaldab stringide tõstutundlikku võrdlemist. Tõstutundlikult võrreldes peab riigi kood olema võrdne suurtähtedeks teisendatud riigi koodiga.
Len([riik_kood])=3
- Riigi kood peab olema täpselt kolm märki pikk.
Len on MS Accessi funktsioon, mis leiab etteantud stringi pikkuse.
Võrdluseks - PostgreSQLis ja Oracles tuleks kasutada regulaaravaldist
'^[A-Z]{3}$'
. Alates stringi algusest (^) kuni lõpuni ($) peab selles olema täpselt kolm suurtähte A-Z. PostgreSQLis oleks CHECK kitsenduse tingimus
riik_kood~'^[A-Z]{3}$'
~ on operaator tõstutundlikuks (
case sensitive) regulaaravaldise mustrile vastavuse kontrollimiseks.
Oracles oleks CHECK kitsenduse tingimus
REGEXP_LIKE(riik_kood, '^[A-Z]{3}$')
REGEXP_LIKE on funktsioon regulaaravaldise mustrile vastavuse kontrollimiseks.