Как конвертировать NVARCHAR в BIT в MSSQL - PullRequest
0 голосов
/ 28 июня 2018

Я новичок в mssql, здесь я получаю параметр как "NVARCHAR", но тип данных столбца - BIT, поэтому мне нужно преобразовать данные Nvarchar в битовые данные.

Здесь данные Nvarchar всегда либо "True", либо "False".

INSERT INTO EC_CUSTOMER_PROFILE(
                                        CP_SEND_NEWS_LETTER,
                                        CP_SEND_PARTNER_SPECIAL_OFFER,
                                        CP_CREATION_DATE,
                                        CP_CREATED_BY)

                                 VALUES(
                                        @mNewsLetter, //Nvarchar(50)
                                        @mSpecialOffer, //Nvarchar(50)
                                        GETDATE(),
                                        @mUserId)

Может кто-нибудь помочь мне это исправить.

Ответы [ 3 ]

0 голосов
/ 28 июня 2018
INSERT INTO EC_CUSTOMER_PROFILE(
                                        CP_SEND_NEWS_LETTER,
                                        CP_SEND_PARTNER_SPECIAL_OFFER,
                                        CP_CREATION_DATE,
                                        CP_CREATED_BY)

                                 VALUES(
                                         CASE WHEN @mNewsLetter = 'True'  THEN 1 
                                              WHEN @mNewsLetter = 'False' THEN 0
                                         END, 
                                         CASE WHEN @mSpecialOffer = 'True'  THEN 1 
                                              WHEN @mSpecialOffer = 'False' THEN 0
                                         END,
                                        GETDATE(),
                                        @mUserId)
0 голосов
/ 28 июня 2018

Просто бросьте это как bit.

Строки True и False интерпретируются так, как вы ожидаете.

INSERT INTO EC_CUSTOMER_PROFILE
            (CP_SEND_NEWS_LETTER,
             CP_SEND_PARTNER_SPECIAL_OFFER,
             CP_CREATION_DATE,
             CP_CREATED_BY)
VALUES     ( CAST(@mNewsLetter AS BIT),CAST(@mSpecialOffer AS BIT),GETDATE(),@mUserId) 
0 голосов
/ 28 июня 2018

Просто используйте выражение CASE, например,

CASE @mSpecialOffer WHEN 'TRUE' THEN 1 ELSE 0 END

так ...

INSERT INTO EC_CUSTOMER_PROFILE(
       CP_SEND_NEWS_LETTER,
       CP_SEND_PARTNER_SPECIAL_OFFER,
       CP_CREATION_DATE,
       CP_CREATED_BY)

VALUES(
       CASE @mNewsLetter WHEN 'TRUE' THEN 1 ELSE 0 END, 
       CASE @mSpecialOffer WHEN 'TRUE' THEN 1 ELSE 0 END, 
       GETDATE(),
       @mUserId)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...