Using EncryptByKey to encrypt a column is a one-time solution that requires you to use DecryptByKey each and every time you wish to gain access to the underlying encrypted data. If, however, your business logic no longer requires you to maintain encryption on the column and you wish to return the column to its previous plaintext state, you must create an extra column in the target table to hold the data.
Following the example provided on the EncryptByKey BOL page, suppose you encrypted the NationalIDNumber column in the following manner:
UPDATE HumanResources.Employee
SET EncryptedNationalIDNumber = EncryptByKey(Key_GUID('SSN_Key_01'), NationalIDNumber);
GO
To view the NationalIDNumber column in a decrypted state, you would run DecryptByKey on the column. However, supposing you wished to return this column to a permanently unencrypted state, you could add a new column with the target data type, decrypt the data, transfer it to the column, and then either delete the old column and rename the new to match the old, or keep both columns depending on your organization's business logic. This would look as follows:
ALTER TABLE HumanResources.Employee
ADD NationalIDNumber_unencrypted varchar(100)
GO
UPDATE HumanResources.Employee
SET NationalIDNumber_unencrypted = CONVERT(varchar(100), DecryptByKey(NationalIDNumber))
GO
-- Optional depending on your business logic and your columns' naming needs.
ALTER TABLE HumanResources.Employee
DROP COLUMN NationalIDNumber
GO
EXEC sp_rename 'HumanResources.Employee.NationalIDNumber_unencrypted', 'NationalIDNumber', 'COLUMN';
For a temp table solution to the permanent decryption problem, and more discussion of this issue, check out this post: http://forums.microsoft.com/Forums/ShowPost.aspx?PostID=3019745&SiteID=1