我有一个sql server 2005数据库,其中包含一个数据类型为bit的列。当我查看sql server management studio中的数据时,我看到列值为0或1,当我使用SAS时,我看到0或-1,就像SAS正在否定1值。有人对此有解释吗?感谢。
答案 0 :(得分:5)
我认为您必须使用libname oledb
从SAS连接到SQL Server。我可以在这里复制你的问题: -
用于生成虚拟数据的SQL Server代码
create table dbo.tbl (
tblId int identity(1,1) not null
constraint pk_tbl_tblId primary key,
bool bit not null,
)
go
insert into dbo.tbl(bool) values(0)
insert into dbo.tbl(bool) values(1)
使用OLEDB的SAS代码
libname imm oledb provider=sqloledb
properties=(
"Integrated Security"=SSPI
"Persist Security Info"=False
"Initial Catalog"=test
"Data Source"=localhost
);
proc print data=imm.tbl; run;
打印输出为: -
Obs tblId bool
1 1 0
2 2 -1
使用PROC SQL的SAS代码
似乎使用PROC SQL应该可以解决您的问题。
proc sql noprint;
connect to sqlservr (
server='localhost'
database='test'
'Integrated Security'='SSPI'
'Persist Security Info'='False'
);
create table test as
select *
from connection to sqlservr (
select * from dbo.tbl
);
disconnect from sqlservr;
quit;
proc print data=test; run;
打印输出为: -
Obs tblId bool
1 1 0
2 2 1