Можете да добавите изчислена колона към таблицата, която ще преобразува тези низове в дати, когато вашият дискриминатор има конкретна стойност (тук току-що използвах 'date'
).
ALTER TABLE Foo
ADD trueDate AS
CASE
WHEN type = 'date' THEN CONVERT(date, 'mixedColumn', 101)
ELSE NULL
END
PERSISTED
Ако имате информация за часа, тогава date
трябва да бъде datetime
в CONVERT()
функция.
Освен това 101
е стилов код, указващ очакван формат MM/dd/yyyy
. Ако имате нещо различно, вижте това:http://msdn.microsoft .com/en-us/library/ms187928.aspx
, но имайте предвид, че ако използвате стил под 100, вашият израз ще се счита за недетерминистичен и не можете да направите вашата изчислена колона PERSISTED
, така че реализациите ще се извършват в движение с всяка заявка (не искате това).
Изчислената колона ще се актуализира, когато стойностите на реда се променят; в противен случай стойностите се запазват и могат да се правят заявки точно както във всяка друга колона. Не са необходими задействания.