2016-07-25 3 views
0

SQL Server 테이블에 비트 열이 있습니다. 1, 0 또는 null을 저장합니다. 프론트 엔드에서 ""에 NULL을 어떻게 삽입 할 수 있습니까?

, 나는 NULL""에 값을 삽입 할 수있는 방법을

True, False 또는 "" 전달됩니다. 거짓에 대한

현재이 저장되어 NULL 및 ""

내 현재 코드가

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

프런트 엔드 란 무엇입니까? 대부분의 현대 언어는'DBNULL' 표현을 가지고 있습니다 ... –

+0

'@ YesNoNull'의 선언 된 타입은 무엇입니까? –

+2

프런트 엔드에서 넣으려는 실제 값을 전달하는 것이 잘못된 것입니다. '1','0' 또는'NULL'? –

답변

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); 
+0

으로 레코드를 얻을 것입니다. 여기에 요점이 있습니다. XML 프레이밍을하기 전에 값은 C#에서 True, False 및 null입니다. XML 프레이밍 후에는 자동으로 "1", "0"및 ""로 변경됩니다. 이 XML에서는 SQL 저장 프로 시저에서 OPENXML을 사용하고 커서를 통해 실행하여 값을 1, 0 및 Null로 저장해야합니다. 불편을 끼쳐 드려 죄송합니다. 여기서 필기 기능에 대한 요점은 없습니다. –

+0

작업이 진행되는 곳에서 저장 프로 시저 조각을 게시 할 수 있습니까? –

+0

해결되었습니다. varchar 및 bit 값에 "1"및 1을 사용했습니다. 고마워. –

2

아래에 기재되어 있습니다 대신, BIT@YesNoNull를 선언 VARCHAR(1)로 선언하고, 코드가 작동 한 것 같습니다 승인. 문제는 NULLIF''0으로 처리하기 때문입니다.

관련 문제