Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Change column from VARCHAR(MAX) to VARBINARY(MAX)

Tags:

sql-server

I have a table which has a VARCHAR(MAX) column, and I need to change it to VARBINARY(MAX).

I tried using the command

ALTER TABLE TableName ALTER COLUMN ColumnName VARBINARY(MAX)

but I got the error

Msg 257, Level 16, State 3, Line 1
Implicit conversion from data type varchar(max) to varbinary(max) is not allowed.
Use the CONVERT function to run this query.

The table has no data, so I can't understand why it's complaining about data conversion.

like image 357
Doug Avatar asked Jan 26 '13 17:01

Doug


People also ask

Can we convert varchar to varbinary in SQL Server?

Implicit conversion from data type varchar to varbinary is not allowed. Use the CONVERT function to run this query.

What is the difference between varchar and Varbinary?

The VARBINARY type is similar to the VARCHAR type, but stores binary byte strings rather than non-binary character strings.

Can Max be used on varchar?

VARCHAR(MAX) is different from VARCHAR because it supports character strings up to 2 GB (2,147,483,647 bytes) in length. You should consider using VARCHAR(MAX) only when each string stored in this data type varies considerably in length, and a value might exceed 8000 bytes in size.

What is the max length of varchar Max?

Values in VARCHAR columns are variable-length strings. The length can be specified as a value from 0 to 65,535. The effective maximum length of a VARCHAR is subject to the maximum row size (65,535 bytes, which is shared among all columns) and the character set used. See Section 8.4.


2 Answers

You cannot perform this conversion using an ALTER TABLE statement since converting from varchar(max) to varbinary(max) requires an explicit conversion. So you should follow these steps to alter your table:

  1. Alter table with new column of VARBINARY(MAX)
  2. If you have existing data in the VARCHAR(MAX) column, use update statement to add the data to the VARBINARY column
  3. Alter table to drop the VARCHAR(MAX) column
  4. Rename varbinary column to varchar name (per comment from @Ben Thul)
like image 154
Taryn Avatar answered Sep 22 '22 03:09

Taryn


Convert Varchar to Int and then change Int to Binary.

like image 30
Simple Avatar answered Sep 22 '22 03:09

Simple