CHECK-EINSCHRÄNKUNG der Zeichenfolge, die nur Ziffern enthalten. (Oracle-SQL)

Ich habe eine Spalte, sagen PROD_NUM, die enthält eine 'Nummer' wird Links mit Nullen aufgefüllt. Zum Beispiel 001004569. Sie sind alle neun Zeichen lang sein.

Ich nicht verwenden, die einen numerischen Typ, weil Sie den normalen Betrieb auf Nummern nicht Sinn machen, auf diese "zahlen" (Zum Beispiel PROD_NUM * 2 macht keinen Sinn.) Und da Sie alle die gleiche Länge, die Spalte ist definiert als CHAR(9)

CREATE TABLE PRODUCT (
    PROD_NUM CHAR(9) NOT NULL
    -- ETC.
)

Möchte ich einschränken PROD_NUM so kann es enthält nur neun stellen. Keine Leerzeichen, keine anderen Zeichen außer '0' bis '9'

+1 für Funkenbildung eine gute philosophische Diskussion 😉
+1 für die Beobachtung, dass, wenn arithmetische Operationen sind nicht sinnvoll auf die Spalte, dann sollte es nicht als Zahl gespeichert. Es war eine Reizung, die mir seit Jahren, dass die Menschen speichern eine SSN oder Telefon-Nummer oder Kunden-Konto-Nummer in einen numerischen Datentyp, und dann müssen TO_CHAR() auf, um mit ihm umgehen. Gut gemacht.

InformationsquelleAutor Shannon Severance | 2009-07-22

Schreibe einen Kommentar