Sie können der Tabelle eine berechnete Spalte hinzufügen, die diese Zeichenfolgen in Daten umwandelt, wenn Ihr Diskriminator einen bestimmten Wert hat (hier habe ich nur 'date'
verwendet ).
ALTER TABLE Foo
ADD trueDate AS
CASE
WHEN type = 'date' THEN CONVERT(date, 'mixedColumn', 101)
ELSE NULL
END
PERSISTED
Wenn Sie Zeitinformationen haben, dann date
sollte datetime
sein im CONVERT()
Funktion.
Auch die 101
ist ein Stilcode, der ein erwartetes Format von MM/dd/yyyy
angibt . Wenn Sie etwas anderes haben, lesen Sie hier:http://msdn.microsoft .com/en-us/library/ms187928.aspx
, aber denken Sie daran, dass bei Verwendung eines Stils unter 100 Ihr Ausdruck als nicht deterministisch betrachtet wird und Sie Ihre berechnete Spalte nicht PERSISTED
machen können , sodass die Konvertierungen bei jeder Abfrage spontan durchgeführt werden (das wollen Sie nicht).
Die berechnete Spalte aktualisiert sich selbst, wenn sich die Zeilenwerte ändern; Andernfalls werden die Werte wie in jeder anderen Spalte beibehalten und können abgefragt werden. Keine Trigger erforderlich.