Do tabulky můžete přidat vypočítaný sloupec, který převede tyto řetězce na data, když má váš diskriminátor konkrétní hodnotu (zde jsem právě použil 'date'
).
ALTER TABLE Foo
ADD trueDate AS
CASE
WHEN type = 'date' THEN CONVERT(date, 'mixedColumn', 101)
ELSE NULL
END
PERSISTED
Pokud máte informace o čase, pak date
by měl být datetime
v CONVERT()
funkce.
Také 101
je kód stylu označující očekávaný formát MM/dd/yyyy
. Pokud máte něco jiného, podívejte se na toto:http://msdn.microsoft .com/en-us/library/ms187928.aspx
, ale mějte na paměti, že pokud použijete styl nižší než 100, váš výraz bude považován za nedeterministický a vypočítaný sloupec nemůžete nastavit na PERSISTED
, takže konverze se budou provádět za běhu s každým dotazem (to nechcete).
Vypočítaný sloupec se sám aktualizuje, když se změní hodnoty řádku; jinak jsou hodnoty trvalé a dotazovatelné stejně jako v jakémkoli jiném sloupci. Nejsou vyžadovány žádné spouštěče.