Qual é a melhor maneira de lidar com valores booleanos em Db2?

Base de Dados

Db2

Cenário

Tenho uma coluna que precisa de ser verdadeira ou falsa. Encontrei duas fontes que apontam para a forma de o conseguir; no entanto, quando as reúno, tenho um erro.

  1. valores Booleanos
  2. vazamento entre tipos de Dados

Solução Actual

CREATE TABLE USERS
(
   ID INT NOT NULL,
   .
   .
   .
   IS_LOCKED SMALLINT NOT NULL WITH DEFAULT 0,
   PRIMARY KEY(ID)
);

SELECT U.ID, CAST(U.IS_LOCKED AS BOOLEAN) as IS_LOCKED FROM USERS U

erro: A value with data type "SYSIBM.SMALLINT" cannot be CAST to type "SYSIBM.BOOLEAN"

Pergunta

Como posso usar Booleanos em Db2?

 0
Author: H. Trujillo, 2018-03-20

3 answers

Db2 V11. 1 no Linux / Unix / Windows suporta BOOLEAN como um tipo de dados de coluna e tais colunas podem ser devolvidas em um conjunto de resultados. Aqui está um exemplo usando o processador de linha de comando (na linha de comandos bash shell):

create table mytable( id integer, mybool boolean with default true )
DB20000I  The SQL command completed successfully.

insert into mytable(id, mybool) values (1, false), (2, true), (3, false)
DB20000I  The SQL command completed successfully.

select id,mybool from mytable order by 1

ID          MYBOOL
----------- ------
          1      0
          2      1
          3      0

  3 record(s) selected.

No entanto, enquanto o DDL simples e o CLP para o SQL DML suportam o boolean, considere o impacto nas aplicações de usar o DB2 column-datatype boolean. Verifique como o PHP , Python, Java,. Net, etc pode manipular este tipo de dados de acordo com quaisquer linguagens utilizadas para aceder ao seu banco.

Tip : ao pedir ajuda sobre o Db2, é aconselhável mencionar sempre a sua versão-Db2 e o sistema operativo que executa o DB2-server (ou seja , z/os, iSeries, linux/unix/windows) e marcar a sua pergunta em conformidade.

 1
Author: mao, 2018-03-20 16:59:31

Você dá uma ligação para os manuais DB2 11.1, e uma segunda ligação para os manuais DB2 9.7. Aqui reside a tua resposta. Booleano é suportado como um tipo de dados de coluna em DB2 11.1.1.1, mas não em DB2 9.7.

Ver as melhorias listadas para a embalagem Mod 1 Fix Pack 1 de DB2 11.1 aqui https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.wn.doc/doc/c0061179.html#c0061179__FP1{[5]onde diz:

O tipo de dados booleanos pode agora ser usado para a tabela colunas e resultados de expressão. Isto reforça a compatibilidade com outros sistemas de gestão de bases de dados relacionais

 1
Author: Paul Vernon, 2018-03-28 21:14:45

Noutras bases de dados, pode ser explícito:

select (case when u.isLocked = 0 then FALSE else TRUE end)

Mas o DB2 é explicitamente só suporta o código booleano na programação:

  • o tipo de dados booleanos não pode ser devolvido num conjunto de resultados.
 0
Author: Gordon Linoff, 2018-03-20 16:33:25