U kunt een berekende kolom aan de tabel toevoegen die die strings omzet naar datums waarop uw discriminator een specifieke waarde heeft (hier heb ik zojuist 'date'
gebruikt ).
ALTER TABLE Foo
ADD trueDate AS
CASE
WHEN type = 'date' THEN CONVERT(date, 'mixedColumn', 101)
ELSE NULL
END
PERSISTED
Als je tijdinformatie hebt, dan date
moet datetime
zijn in de CONVERT()
functie.
Ook de 101
is een stijlcode die een verwacht formaat van MM/dd/yyyy
. aangeeft . Als je iets anders hebt, raadpleeg dan dit:http://msdn.microsoft .com/en-us/library/ms187928.aspx
, maar houd er rekening mee dat als u een stijl onder 100 gebruikt, uw uitdrukking als niet-deterministisch wordt beschouwd en dat u uw berekende kolom niet PERSISTED
kunt maken , dus de conversies worden direct bij elke zoekopdracht uitgevoerd (dat wil je niet).
De berekende kolom zal zichzelf bijwerken wanneer de rijwaarden veranderen; anders blijven de waarden behouden en kunnen ze worden opgevraagd, net als in elke andere kolom. Geen triggers vereist.