PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SQL Trigger Datenintegrität eines Varchar


dcAlge
2007-05-23, 18:25:01
Ich möchte per Trigger überprüfen ob bei einer Insert-anweisung die Eingabe die Form "Zahl.Zahl" hat.

Also 1.8 ist korrekt, a.5 aber nicht.
Kann mir da einer nen Tipp geben?
Die Spalte die überprüft werden soll hat übrigens den Typ Varchar.

Herzlichen Dank,
dcAlge

Oder anders gefragt: Wie greife ich auf einzelne Teile des Varchar zu?

Darkstar
2007-05-23, 20:53:02
Möglicherweise reicht es, eine Typkonvertierung von VarChar nach Float/Double durchzuführen und dabei auftretende Exceptions entsprechend abzufangen.

Alternativ kopiert man sich halt die Zeichen links und rechts des Punktes in jeweils eine Variable (unter Oracle z. B. mit SUBSTR) und prüft, ob diese eine Zahl ergeben oder nicht (wieder mit Exception-Behandlung oder eben Zeichen für Zeichen).

nefu
2007-05-24, 07:28:18
Falls du mit Oracle arbeitest könntest du auch regular expressions verwenden.
Auf asktom.oracle.com gibt es dazu Beispiele z.B.:

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2200894550208

Gruß!

nefu

Edit : Tutorial zu regular expressions im Oracle technet :

http://www.oracle.com/technology/obe/obe10gdb/develop/regexp/regexp.htm

Viel Erfolg!

Gast
2007-05-24, 09:08:09
Erstmal entschuldigung für Offtopic! :)

Gibt es irgendwo übungsaufgaben mit Lösungen für SQL-Abfragen (insb. Joins)? Auf Oracle-Zugeschnitten wäre besonders nett.

nefu
2007-05-24, 22:52:40
@ Gast :

Übungsaufgaben mit Lösungen habe ich im Netz noch keine gefunden.
Vielleicht hilft diese Referenz zu Joins etwas weiter :

http://www.psoug.org/reference/joins.html

Ansonsten solltest du mal einen Blick in verschiedene Bücher zum Thema SQL bzw. PL/SQL werfen. Manchmal gibt es eine Webseite, von der man Dateien zum installieren von Beispiel-Schemas herunterladen kann.

Eine deutschsprachige (!) Seite zum Thema Oracle Express Edition ist

http://www.oraxe.de

Vielleicht hat dort jemand noch einen Tipp für dich.

Gruß!

nefu