我正在创建一个具有各种数据类型的新表,其中一个是二进制(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
行。
答案 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,但是。
根据该列的用途,它可能更适合作为tinyint
,char(1)
或类似内容,而不是binary(1)
。