我是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)
谁能帮我修复它。
答案 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
。
字符串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)
答案 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)