Vastus: MS Access ei paku täielikku toetust regulaaravaldiste kasutamisele, kuid selle LIKE predikaadi mustrite koostamise võimalusi on laiendatud
regulaaravaldistest tuntud võimalustega.
Nimetatud kitsenduse jõustamiseks on abi, kui see kitsendus ümbersõnastada.
Kui elukoha stringis on vähemalt üks numbrimärk, siis peab selles olema ka mõni selline märk, mis ei ole numbrimärk.
Teatavasti võib binaarset loogilist operatsiooni implikatsioon kasutava avaldise P=>Q kirjutada teisendusreeglite alusel ümber samaväärseks avaldiseks: NOT (P) OR Q. Sellise avaldise saab aga juba tabelitaseme valideerimisreeglina kirja panna.
Antud juhul
- P="Kui elukoha stringis on vähemalt üks numbrimärk"
- Q="peab selles olema ka mõni selline märk, mis ei ole numbrimärk"
Seega seon MS Accessis veeruga elukoht valideerimisreegli:
Not ([elukoht] ALike '%[0-9]%') Or ([elukoht] ALike '%[!0-9]%')
[!0-9] ütleb mustris, et leiduma peab vähemalt üks märk, mis ei kuulu numbrimärkide hulka.
Veel üks võimalus on defineerida MS Accessis veeruga elukoht seotud valideerimisreegel:
IsNumeric([elukoht])=False
Võrdluseks, PostgreSQL ja Oracle võimaldavad regulaaravaldiste kasutamist:
- PostgreSQLis tuleks tabeliga Isik siduda CHECK kitsendus: CHECK (elukoht!~'^[[:digit:]]+$')
- Oracles tuleks tabeliga Isik siduda CHECK kitsendus: CHECK(NOT REGEXP_LIKE(elukoht,'^[[:digit:]]+$'))
Need kitsendused kontrollivad, et elukoht ei vastaks mustrile, mille kohaselt sisaldab see ainult numbrimärke.