我在Sql Server表中有一个列。它将存储1,0或null。
从前端开始,我将传递True
,False
或""
如何使用""
作为NULL
插入值。
目前它为False和""
我目前的代码如下:
INSERT INTO Details(Name, YesNo)
VALUES ('John', NULLIF(@YesNoNull, ''));
答案 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);