Gibt es eine Möglichkeit, beispielsweise 4 verschiedene Werte für eine varchar-Spalte in MS SQL Server 2008 anzugeben?
Zum Beispiel brauche ich eine Spalte namens Frequenz (varchar), die nur 'Täglich', 'Wöchentlich', 'Monatlich', 'Jährlich' als mögliche Werte akzeptiert
Kann dies beim Erstellen der Tabelle im SQL Server Management Studio festgelegt werden?
sql
sql-server-2008
ssms
Adam
quelle
quelle
Antworten:
Haben Sie bereits darüber nachgedacht, in
check constraint
dieser Spalte ein Element hinzuzufügen , das die Werte einschränkt? Etwas wie:quelle
Frequency varchar(200)
Sie möchten eine Prüfbedingung .
Du willst so etwas wie:
Sie können auch Prüfeinschränkungen mit Skalarfunktionen implementieren, wie im obigen Link beschrieben. So bevorzuge ich es.
quelle
Persönlich würde ich es als tinyint codieren und:
Gründe dafür:
Das Speichern von Text dauert durchschnittlich 8 Bytes, für tinyint 1 Byte. Über Millionen von Zeilen hinweg wird dies einen Unterschied machen.
Was ist mit Kollation? Ist "Täglich" dasselbe wie "TÄGLICH"? Für diesen Vergleich sind Ressourcen erforderlich.
Was ist, wenn Sie "Zweiwöchentlich" oder "Stündlich" hinzufügen möchten? Dies erfordert eine Schemaänderung, wenn Sie einer Nachschlagetabelle einfach neue Zeilen hinzufügen können.
quelle
Wenn Sie eine Tabelle bearbeiten,
klicken Sie mit der rechten Maustaste -> Einschränkungen überprüfen -> Hinzufügen -> Geben Sie etwas
Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly')
in das Ausdrucksfeld und einen guten Einschränkungsnamen in das Feld (Name) ein.Du bist fertig.
quelle