Тип чтения бит SAS в SQL Server 2005 - PullRequest
7 голосов
/ 17 марта 2011

У меня есть база данных sql server 2005, в которой есть таблица со столбцом типа бит данных. Когда я смотрю на данные в SQL Server Management Studio, я вижу значение столбца как 0 или 1, когда я получаю с SAS, я вижу 0 или -1, как SAS отрицает значение 1. У кого-нибудь есть объяснение этому? Спасибо.

1 Ответ

5 голосов
/ 17 марта 2011

Я считаю, что вы должны использовать libname oledb для подключения к SQL Server из SAS.Я могу повторить вашу проблему здесь: -

код 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)

код SAS с использованием OLEDB

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

SAS-код с использованием PROC SQL

Похоже, использование 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...