Puoi aggiungere una colonna calcolata alla tabella che converte quelle stringhe in date quando il tuo discriminatore ha un valore specifico (qui ho appena usato 'date'
).
ALTER TABLE Foo
ADD trueDate AS
CASE
WHEN type = 'date' THEN CONVERT(date, 'mixedColumn', 101)
ELSE NULL
END
PERSISTED
Se disponi di informazioni sull'ora, date
dovrebbe essere datetime
nel CONVERT()
funzione.
Inoltre, il 101
è un codice di stile che indica un formato previsto di MM/dd/yyyy
. Se hai qualcosa di diverso, fai riferimento a questo:http://msdn.microsoft. .com/en-us/library/ms187928.aspx
, ma tieni presente che se utilizzi uno stile inferiore a 100 la tua espressione sarà considerata non deterministica e non puoi rendere la colonna calcolata PERSISTED
, quindi le conversioni verranno eseguite al volo con ogni query (non lo vuoi).
La colonna calcolata si aggiornerà automaticamente quando i valori della riga cambiano; in caso contrario i valori sono persistenti e interrogabili proprio come in qualsiasi altra colonna. Nessun trigger richiesto.