SQL Server 2008 - Modifica delle tabelle: le colonne di bit richiedono "Vero" o "Falso"
-
19-08-2019 - |
Domanda
Non tanto una domanda quanto un'osservazione ...
Sto solo aggiornando a SQL Server 2008 sulla mia macchina di sviluppo in previsione dell'aggiornamento delle mie applicazioni live. Non ho previsto alcun problema poiché [penso] generalmente utilizzo lo standard T-SQL e probabilmente non troppo lontano dallo standard ANSI SQL. Fin qui tutto bene, ma sono stato davvero colpito da un cambiamento molto semplice:
Stavo creando una tabella di ricerca semplice e piccola per memorizzare un elenco di codici e includendo una colonna di bit per indicare il codice predefinito corrente. Ma quando ho usato l'opzione "Modifica le prime 200 righe" nuove / modificate e ho inserito i miei 0 e 1 nella colonna dei bit ho ricevuto un errore:
'Valore non valido per cella - Stringa era non riconosciuto come booleano valido '
Dopo un po 'di graffi alla testa, ho provato True and False - e hanno funzionato.
Quindi sembra che questa nuova funzione di modifica richieda la digitazione di 4 o 5 caratteri, anziché il precedente 1.
Controllando ulteriormente, possiamo ancora usare ' ... where bitval = 1
' ma ora possiamo anche usare ' ... where bitval =' true '
'. Ma qualsiasi risultato restituito rende queste colonne di bit come 0 o 1 ancora.
Sembra tutto mezzo passo indietro. Non la fine del mondo, ma un fastidio inutile.
Qualcuno ha qualche idea su questo problema? O ci sono altri nuovi Gotcha con SQL Server 2008?
Aggiornamento 2012: Avendo appena installato SQL Server 2012, noto che questo comportamento è stato "corretto". Proprio come prima, ora posso inserire 1/0 anziché True / False direttamente nelle righe, usando l'opzione "Modifica le prime 200 righe". È una piccola cosa, ma sono felice.
Soluzione
Tranne che l'hanno fatto saltare e hanno imposto solo la metà della regola Prova a usare ... = Vero in un'istruzione di aggiornamento e vedi cosa succede. O andare fino in fondo o per niente. Mi dispiace Microsoft, non posso darti alcun segno su quello
Altri suggerimenti
Sei sempre stato in grado di usare "Vero" e "Falso" per confrontare le colonne BIT ... Penso che questa modifica a "forza". è bene essere chiari sul fatto che il campo è un BIT e non un INT.
Personalmente, mi piace che C # non supporti " if (0) ... " Immagino sia solo una preferenza per la chiarezza.
Ho appena trovato questo (dopo aver preparato tutto il resto) Costruito in base al design