Kodulehed
[385] - Andmebaasid II (ITI0207) (sügis 2023)
Esiletöstetud Kiirvalik
Lisainfo Kõige olulisemate tegevuste kiirvalik. Failide saatmiseks valige Vastamine alt sobiv ülesanne.
Üldist
Materjalid
LisainfoMaterjalide kataloogid.
Värvilised mummud tähistavad hinnangulist kataloogide lugemise vajadust. Roheline - suurim, kollane - keskmine, punane või mummuta - väikseim
Isiklik
Lisainfo Info ainult Sulle - teised kasutajad seda ei näe
Abi
Lisainfo Võimalus küsida õppejõult abi (nagu foorum, kus saab küsida küsimusi ja kommenteerida vastuseid)
Mitmesugust
Abi / Kasutajatugi / Oracle

Avalikud küsimused ja vastused:

Küsimuste teemade nimekiri

Anonüümne:
Millist regulaaravaldist tuleks kasutada Oracles, et kontrollida andmebaasi tasemel kolmetähelisi riigi koode?
Vastus: Märkus: Paraku ei toeta Oracle andmebaasimootor BOOLEAN tüüpi ja seetõttu tuleb järgnevas PL/SQL anonüümses plokis tulemuse väljastamiseks asendada tõeväärtus tekstilise väärtusega.

DECLARE
result BOOLEAN;
BEGIN
result:=REGEXP_LIKE('EST', '^[A-Z]{3}$');
IF (result=true) THEN
dbms_output.put_line('TRUE');
ELSE
dbms_output.put_line('FALSE');
END IF;
END;
/

Oracle APEXis, SQLclis ja SQL*Plusis annab see test tulemuseks TRUE, Oracle SQL Developeris (versioon 20.2) annab see tulemuseks FALSE.

Kui tabelis on selline CHECK kitsendus (nt veerul riigi_kood), siis Oracle APEXis ja SQL Plusis õnnestub sellise CHECK kitsendusega tabelisse kenasti andmeid lisada. Samas SQL Developeris öeldakse andmete lisamisel (nt riik koodiga EST), et CHECK kitsenduse viga - nii INSERT lauseid käivitades, kui otse tabelisse andmeid lisades.

Üha rohkem hakkab tunduma, et see on mingi SQL Developeri mulle tundmatu eripära.

Soovi korral võite kasutada regulaaravaldise mustrit '^[[:upper:]]{3}$', mis toimib tõrgeteta kõigis minu kasutatud Oracle andmebaasisüsteemiga suhtlemiseks mõeldud keskkondades.

Pange tähele, et mustrid '^[[:upper:]]{3}$' ja '^[A-Z]{3}$' pole samaväärsed, sest esimene lubab ka täpitähti (ÕÄÖÜ), kuid teine mitte. Kuna riikide koodides pole selliseid täpitähti, siis oleks mustrina eelistatud '^[A-Z]{3}$'.

PostgreSQLis toimib regulaaravaldis '^[A-Z]{3}$' nii nagu peab.

Hinda vastust:

Keskmine hinne : Pole veel hinnanguid!