Andmebaasid II (ITI0207) (sügis 2020)

Küsimus

Anonüümne
Kuidas kontrollida regulaaravaldisega, et string tohib sisaldada ainult numbreid ning suurtähti (A-Z)?

Vastus: Katsetus 1

Regulaaravaldis: '[A-Z0-9]+'

Kuidas kontrollida seda regulaaravaldist PostgreSQLis?

SELECT 'EST?12'~'[A-Z0-9]+' AS tulemus;

ja

SELECT 'est12'~'[A-Z0-9]+' AS tulemus;

annavad mõlemad tulemuseks TRUE, sest kontrollitakse, et stringis sisalduks vähemalt üks märk (seda näitab +), mis kuulub märkide klassi [A-Z0-9].

Seega see regulaaravaldis seda ülesannet ei lahenda.

Katsetus 2

Regulaaravaldis: '^[A-Z0-9]+$'

^ tähendab stringi algust
$ tähendab stringi lõppu
Stringi alguse ja lõpu vahel tohivad olla vaid märkide klassi kuuluvad märgid.

Kuidas kontrollida seda regulaaravaldist PostgreSQLis?

SELECT 'EST?12'~'^[A-Z0-9]+$' AS tulemus;

ja

SELECT 'est12'~'^[A-Z0-9]+$' AS tulemus;

annavad mõlemad tulemuseks FALSE.

SELECT 'EST12'~'^[A-Z0-9]+$' AS tulemus;

ja

SELECT 'est12'~*'^[A-Z0-9]+$' AS tulemus;

annavad mõlemad tulemuseks TRUE.

SELECT 'est12'~*'^[A-Z0-9]+$' AS tulemus;

tulemuseks on TRUE, sest ~* operaator teostab tõstutundetut vastavuse kontrolli.

Hinda vastust:

Keskmine hinne: Pole veel hinnanguid!