2013-07-03 4 views
20

Ho una tabella in SQL Server 2000 con colonna BitValue. Tuttavia, viene visualizzato come True/False in SQL Server Management Studio. Quando faccio un Select * from Tablename restituisce i valori della colonna BitValue come Vero/Falso. Come posso forzarlo a restituire il valore come bit (1/0) anziché True/False? Qualsiasi aiuto sarà davvero apprezzato?Valore bit restituito come 1/0 e NON True/False in SQL Server

+0

Perché siete preoccupati per il formato di visualizzazione di un valore booleano in SSMS? –

+0

Sto usando quei valori, facendo un po 'di lavoro e inserendo nuovamente i valori in quella tabella. Ma non posso inserire i valori come Vero/Falso perché genera un errore che dice qualcosa come il valore di bit accetta solo 1 o 0. – Butters

+1

'Vero' è come SSMS visualizza una colonna di tipo' bit' con valore '1'. Un client C# riceverà un valore 'SqlBoolean.True'. – Andomar

risposta

16

Modifica la query per generare l'output desiderato.

Provale colata a int:

select cast(bitFlag as int) 

Oppure, se si vuole, utilizzare case:

select (case when bitFlag = 0 then 0 else 1 end) 
31

Prova con questo script, forse sarà utile:

SELECT CAST('TRUE' as bit) -- RETURN 1 
SELECT CAST('FALSE' as bit) --RETURN 0 

Ad ogni modo userei sempre un valore di 1 o 0 (non vero o falso). Seguendo il tuo esempio, lo script di aggiornamento sarebbe:

Update Table Set BitField=CAST('TRUE' as bit) Where ID=1 
4

Questo può essere cambiato per 0/1 attraverso l'utilizzo di CASE WHEN come in questo esempio:

SELECT 
CASE WHEN SchemaName.TableName.BitFieldName = 'true' THEN 1 ELSE 0 END AS 'bit Value' 
FROM SchemaName.TableName