You can implicitly convert any character or binary datatype to unitext, as well as explicitly convert to and from unitext to other datatypes. The conversion result, however, is limited to the maximum length of the destination datatype. When a unitext value cannot fit the destination buffer on a Unicode character boundary, data is truncated. If you have enabled enable surrogate processing, the unitext value is never truncated in the middle of a surrogate pair of values, which means that fewer bytes may be returned after the datatype conversion. For example, if a unitext column ut in table tb stores the string “U+0041U+0042U+00c2” (U+0041 representing the Unicode character “A”), this query returns the value “AB” if the server’s character set is UTF-8, because U+00C2 is converted to 2-byte UTF-8 0xc382:
select convert(char(3), ut) from tb
These datatypes convert implicitly to unitext |
These datatypes convert implicitly from unitext |
These datatypes convert explicitly from unitext |
---|---|---|
char, varchar, unichar, univarchar, binary, varbinary, text, image |
text, image |
char, varchar, unichar, univarchar, binary, varbinary |
The alter table modify command does not support text, image, or unitext columns to be the modified column. To migrate from a text to a unitext column:
Use bcp out -Jutf8 out to copy text column data out
Create a table with unitext columns
Use bcp in -Jutf8 to insert data into the new table