我怎么能为“”插入NULL

时间:2016-07-25 12:22:47

标签: sql-server

我在Sql Server表中有一个列。它将存储1,0或null。

从前端开始,我将传递TrueFalse""

如何使用""作为NULL插入值。

目前它为False和""

存储NULL

我目前的代码如下:

INSERT INTO Details(Name, YesNo)  
VALUES ('John', NULLIF(@YesNoNull, ''));

2 个答案:

答案 0 :(得分:2)

看起来您已将$channelid = $_GET["channelid"]; $sql = "SELECT s.name, s.country, f.satname, f.frequency, f.polarisation, f.symbrate, f.fec, f.encorfta FROM satellitemulti f LEFT JOIN satellite s ON f.channelid_multi=s.channelid WHERE channelid = :channelid GROUP BY s.name, s.country, f.satname, f.frequency, f.polarisation, f.symbrate, f.fec, f.encorfta"; $stmt = $DB->prepare($sql); $stmt -> bindParam(':channelid', $channelid); $stmt->execute(); 声明为@YesNoNull,而是将其声明为BIT,您的代码将正常运行。问题是因为VARCHAR(1)NULLIF视为''

答案 1 :(得分:1)

sql将''视为假。所以在你的查询中,当@YesNoNull为False时,NULLIF(@ YesNoNull,'')的计算结果为true,因此返回NULL,因此即使它为False,NULL也会存储在db中。

你需要这样做。根据你的需要进行更改。

DECLARE @YesNoNull VARCHAR(10)
DECLARE @YNN BIT
SELECT @YesNoNull = <VALUE FROM XML)
SELECT @YNN = CASE @YesNoNull 
        WHEN 'True' THEN 1
        WHEN 'False' THEN 0
        WHEN '' THEN NULL
    END
INSERT INTO Details(Name, YesNo)  
VALUES ('John', @YNN);