为什么我在创建表时遇到此错误?

时间:2013-12-23 17:46:01

标签: sql sql-server-2008-r2

我正在创建一个具有各种数据类型的新表,其中一个是二进制(n)。当我执行该语句时,我最终得到以下

  

不允许从数据类型varchar到二进制的隐式转换,使用CONVERT函数。

我的问题:为什么我会收到此错误,当没有数据要转换时,我只是创建一个表?

Create Table EMP.DETAILS
       (
       ID INT NOT NULL,
       TYPE INT,
       Created datetime2,
       Key_No varchar(5),
       Batch_IN INT,
       UN_ID BINARY(1) not null default '',
       Source INT,
       SITE CHAR(1)
       )

当我执行上述语句时,我收到上面提到的错误,但是它会将我引导到代码的CREATE TABLE行。

1 个答案:

答案 0 :(得分:3)

错误显示“不允许从数据类型varchar到二进制的隐式转换”。您正尝试在此处为二进制文件分配默认varchar字符:

UN_ID BINARY(1) not null default ''

如果绝对需要二进制列的默认值,可以直接将其设置为0x00

UN_ID BINARY(1) not null default 0x00

这基本上将您的默认值设置为0.您还可以将其设置为整数值:

UN_ID BINARY(1) not null default 0

最后,如果您绝对需要成为空字符串,则可以使用以下''找到SELECT的二进制表示形式:

SELECT CONVERT(binary, '')

我很确定它只是0,但是。

根据该列的用途,它可能更适合作为tinyintchar(1)或类似内容,而不是binary(1)