不允许从数据类型varchar到varbinary(max)的隐式转换。使用CONVERT

时间:2016-05-12 01:19:17

标签: sql-server

我收到以下错误:

  

“从数据类型varchar到varbinary(max)的隐式转换不是   允许。使用CONVERT函数运行此查询。“

注意:

@transientCartData定义为varbinary(max)

@savedCartData定义为varbinary(max)

查询:

exec [ecomm].[expiry_save_cart2_v1] 
@id=80094, 
@lastUpdated='2016-05-11 14:23:42.637',
@transientCartExpiryIntervalInMin='45',
@session_id='5C632166-D7D6-4F51-A87F-EED41376EEA7',
@version='TEST_VERSION',
@associated_slots='Null',
@account_id='TEST_ACCOUNT_ID',
@cookie='Null',
@transientCartData= 'TEST_DATA',
@savedCartData= 'TEST_DATA',
@data2='NULL',
@is_pricing_needed='1',
@savedCartExpiryIntervalInDays='14',
@persistentCartExpiryIntervalInDays='1',
@cart_type='PERSISTENT', 
@customerAccountId=TEST_ACCOUNT_ID

然后当我尝试使用@transientCartData = CONVERT(varbinary, 'TEST_DATA', 1)时,我收到此错误:

  

关键字“CONVERT”附近的语法不正确。

1 个答案:

答案 0 :(得分:0)

SQL-服务器

SQL-Server具有Convert的以下语法。

  

CONVERT(data_type [(length)],expression [,style])

由于样式设置为 1 ,您的代码失败。

  

如果data_type是二进制类型,则表达式必须是字符表达式。表达式必须由偶数个十六进制数字组成(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,a,b,c ,d,e,f)。 ...

您需要将其设置为 0 (默认值)。

  

将ASCII字符转换为二进制字节或二进制字节转换为ASCII字符......

示例转换用法,产生 0x544553545F44415441

__init__

的MySQL

根据documentation for Convert您的方法签名不正确。

CONVERT具有以下MySQL语法:

  

CONVERT(expr,type),CONVERT(expr USING transcoding_name)

调用存储过程在MySQL中使用Call

  

CALL sp_name([parameter [,...]])

用法的一个例子是:

Declare @vb as varbinary(max)
Set @vb =  CONVERT(varbinary(max), 'TEST_DATA', 0)
select @vb