Flag1
是varchar
列,其值爲「true」和「false」。我需要將其轉換爲位列。如何將varchar列轉換爲SQL SERVER中的位列
當我嘗試這樣做:
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.
Flag1
是varchar
列,其值爲「true」和「false」。我需要將其轉換爲位列。如何將varchar列轉換爲SQL SERVER中的位列
當我嘗試這樣做:
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.
我懷疑'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)
- >消息245,級別16,狀態1,第2行轉換 轉換VARCHAR值 '假' 爲數據類型比特時失敗。
注意錯誤信息中'False'的空格!
雖然從表中選擇,你可以這樣做:
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
我需要在示例中添加「END」關鍵字。 'SELECT CASE Flag1 WHEN'true'THEN 1 ELSE 0 END AS FlagVal'。 – Aebsubis
只是提醒。你能仔細檢查你的結果以防止誤報和否定嗎?請運行以下命令: –
declare @ flag1 varchar(25)='True' - 前導空格 –
當'true'時選擇case @ flag1然後1'false'時0然後0 else 0 end –