3

Flag1varchar 열이고 값은 "true"및 "false"입니다. 비트 열로 변환해야합니다.SQL Server에서 varchar 열을 bit 열로 변환하는 방법

나는이 작업을 수행 할 때 :

Convert(Bit,Flag1) 

는 오류를 보여줍니다

Msg 245, Level 16, State 1, Line 2 
Syntax error converting the varchar value 'False' to a column of data type bit. 
+0

알림. 가양 성 및 네거티브 방지를 위해 결과를 다시 확인할 수 있습니까? –

+0

declare @ flag1 varchar (25) = 'True'- 선행 공백 –

+0

'true'일 경우 1을 선택하고 'false'일 경우 1, 그렇지 않으면 0 else 0 –

답변

6

'Flag1'필드에 'true'및 'false'외에 다른 값이있는 것으로 의심됩니다. 따라서 Flag1의 값을 확인하십시오.

YouTable에서 고유 한 Flag1을 선택하십시오.

declare @Flag varchar(25) = 'False' 
select CONVERT(Bit, @Flag) 

그것은 잘 작동 :

여기 내 증거입니다.

그러나 이렇게하면 같은 오류가 발생합니다.

declare @Flag varchar(25) = ' False' -- Pay attention to the the space in ' False'! 
select CONVERT(Bit, @Flag) 

- 데이터 형식의 비트에 VARCHAR 값 '이 False'로 변환 할 때> 메시지 245, 수준 16, 상태 1, 줄 2 변환에 실패했습니다.

오류 메시지에서 '거짓'의 공백에주의하십시오!

3

테이블에서 선택하는 동안, 당신은이 작업을 수행 할 수 있습니다

SELECT CASE Flag1 WHEN 'true' THEN 1 ELSE 0 END AS FlagVal 

구문 :

CASE input_expression 
    WHEN when_expression THEN result_expression [ ...n ] 
    [ ELSE else_result_expression ] 
END 
Searched CASE expression: 
CASE 
    WHEN Boolean_expression THEN result_expression [ ...n ] 
    [ ELSE else_result_expression ] 
END 
+0

"END"키워드를 예제에 추가해야했습니다. 'SELECT CASE Flag1 WHEN '참'THEN 1 ELSE 0 END AS FlagVal'. – Aebsubis

관련 문제