如何在MSSQL中将NVARCHAR转换为BIT

时间:2018-06-28 11:42:10

标签: sql-server sql-server-2008

我是mssql的新手,在这里我收到的参数为“ NVARCHAR”,但列数据类型为BIT,因此我需要将Nvarchar数据转换为Bit数据。

此处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 :(得分:3)

只需使用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)

答案 1 :(得分:1)

只需将其转换为bit

字符串TrueFalse的解释如您所愿。

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) 

答案 2 :(得分:0)

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)