It can be done, but ... why would you want to?
CRC is a data validation function: it allows your code to check if information is uncorrupted and that is a presentation function - all data should be validated and correct before it gets added to a DB, and checked again for validity when necessary after retrieval by presentation code.
What is the DB engine supposed to do with the CRC - if it generates it on data it receives and stores them both then it's lost a layer of "validity" - the data could be corrupted by the time it arrives at the engine.
If it generates it as a validity check on the way out, then it's validating the stored data which is meaningless given that the transfer already has a couple of layers which include error detection and correction mechanisms.
I've never heard of anyone wanting to do this before, but it is possible (and easier if you have SLQ 22 or higher):
Bitwise operators (Transact-SQL) - SQL Server | Microsoft Learn[
^] and
Function to Calculate a CRC16 Checksum[
^] - see Antonio Pires solution. These are in C, not SQL - but you must have a pretty good knowledge of SQL function coding or you wouldn't be asking the question, so it shouldn't be difficult for you to convert and test.
Would I do it? No, not unless there was a compelling reason I couldn't avoid!