Select: Retornar Null ao invez do valor do campo???

31/01/2006

Olá colegas.

O caso é:

Preciso que no retorno de um select certo campo (mesmo tendo o seu valor na tabela) me retorne null, por exemplo.


select CLIENTE,DATACAD,DATACAD as NOVOCAMPO from TABELA


é que preciso de um novo campo data (como um campo temporario), pois apos o select faço um while para efetuar uns tratamentos, no qual preciso jogar valores nesse NOVOCAMPO.

O problema é que como este NOVOCAMPO é baseado no DATACAD ele sempre vem com valor, e em NOVOCAMPO so atribuo valor se satisfazer as condições tratadas no while.

Sei que poderia ´anular´ o valor caso a condição for falsa, mas quero aprender se possivel, como fazer isso via SQL.

Grato.


:arrow:


Macario

Respostas

31/01/2006

Delphi32

Se for firebird, você pode usar:

SELECT CODIGO, NOME, NULL AS VARCHAR(10) FROM TABELA.

Até.


Responder Citar

31/01/2006

Macario

Ah! eu sempre me esqueço de citar o ambiente.


D6 com MS-SQL Server 2000.

Mas agradeço por quem citar o conhecimento nos bancos existentes, pois nunca se sabe por onde andaremos...não..é?


Responder Citar

31/01/2006

Macario

Se for firebird, você pode usar: SELECT CODIGO, NOME, NULL AS VARCHAR(10) FROM TABELA. Até.


Essa acho que é so pra FB mesmo em SQLSERVER nao funcionou

tentei o seguinte

select CLIENTE,DATACAD,null as NOVOCAMPO from TABELA


ai ele retornou null, mas qual será o tipo do campo :?:
como seto o tipo necessario :?:
:arrow:

no meu caso precisaria que fosse DATETIME


Responder Citar

31/01/2006

Delphi32

No SQLSERVER você tem como, pelo select, chamar um campo inteiro como varchar? Se tiver, a sintaxe deve ser a mesma que para chamar o NULL do tipo que você quer...

Até!


Responder Citar

31/01/2006

Macario

No SQLSERVER você tem como, pelo select, chamar um campo inteiro como varchar? Se tiver, a sintaxe deve ser a mesma que para chamar o NULL do tipo que você quer... Até!


Não entendi!


Responder Citar

31/01/2006

Delphi32

Exemplo:

CREATE TABLE TABELA1(
CODIGO INTEGER NOT NULL,
NOME VARCHAR(40)
);

Um select para essa tabela seria:

SELECT CODIGO, NOME FROM TABELA1

Mas eu posso fazer com que o tipo do campo seja alterado através do comando CAST. Por sinal, acabei de perceber que a SQL que eu te mandei estava errada. Faltou justamente o comando CAST. Veja bem, posso retornar para o programa o campo CODIGO como sendo do tipo VARCHAR fazendo:

SELECT
   CAST(CODIGO AS VARCHAR(10)),
   NOME
FROM
   TABELA1


Ou melhor, a sql que eu te passei seria assim:

SELECT
   CODIGO,
   NOME,
   CAST(NULL AS VARCHAR(10))
FROM
   TABELA


Bem, você pode tentar essa SQL com o cast. Não sei se funciona no SQL Server. De qualquer maneira eu queria que você visse que CAST no firebird faz com que o campo venha convertido em outro tipo. Se isso existir no SQL Server então é só aplicar essa lógica e você vai conseguir retornar o nulo como DateTime. Entendeu? Qualquer coisa, posta aqui.

Até!


Responder Citar

31/01/2006

Macario

Valeu, [b:46fd2a1052]delphi32[/b:46fd2a1052]

select CLIENTE,DATACAD,cast(null as datetime) as NOVOCAMPO from TABELA 


funcionou legal.

8)


Responder Citar