2013-06-17 5 views
0

У меня есть таблица со столбцами:Как конвертировать VARBINARY в VARCHAR SQL сервер

ID int, 
FirstName nvarchar(50), 
Phone varchar(50), 
Email varbinary(50) -- (use varbinary for unicode) 

ли хранимая процедура, где я хочу обновления телефона и адрес электронной почты в этой таблице. Это вход parametrs для моей процедуры

@id int, 
@Phone varchar(50), 
@Email varchar(50) 

Как конвертировать Email для VARBINARY когда обновление? Когда я уточняю, как это:

UPDATE myProcedure 
SET [Phone] = @Phone, 
    [Email] = @Email 
WHERE [ID] = @ID 

Есть ошибка: Implicit conversion from data type varchar to varbinary is not allowed. Use the CONVERT function to run this query.

+0

"- (используйте VARBINARY юникода)" составляет абсолютно ** нет ** смысла, когда в SQL Server встроены типы данных unicode (один пример - «nvarchar»). И особенно если ваша процедура принимает вход как «varchar» - все, что не представимо на соответствующей кодовой странице, уже было бы потеряно, прежде чем вы начнете преобразование в «varbinary». –

+0

@Damien_The_Unbeliever спасибо, что ответили – GeoVIP

ответ

2

Почему вы хранящий Email, как varbinary? Измените его на NVARCHAR он будет поддерживать Unicode штраф.

Ваша структура таблицы должна выглядеть следующим образом:

CREATE TABLE YourTable 
(
    ID int, 
    FirstName nvarchar(50), 
    Phone varchar(50), 
    Email NVARCHAR(50) 
) 

Для преобразования:

DECLARE @ConvertedEmail VARBINARY(50) 
SET @ConvertedEmail = CONVERT(varbinary(1000), @Email, 2) 

Вы можете обновить таблицу с помощью @ConvertedEmail

+0

спасибо, что ответили. но если это не сложно, можете ли вы сказать мне, как конвертировать? Я конвертирую, как конвертировать (varchar, [Email]) = @email, но имеет ошибку – GeoVIP

+0

@GeoVIP. Я обновил свой ответ, чтобы включить конвертировать. –

+0

@ спасибо за помощь – GeoVIP

Смежные вопросы