Select: Retornar Null ao invez do valor do campo???
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.
é 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:
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
Curtidas 0
Respostas
Delphi32
31/01/2006
Se for firebird, você pode usar:
SELECT CODIGO, NOME, NULL AS VARCHAR(10) FROM TABELA.
Até.
SELECT CODIGO, NOME, NULL AS VARCHAR(10) FROM TABELA.
Até.
GOSTEI 0
Macario
31/01/2006
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..é?
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..é?
GOSTEI 0
Macario
31/01/2006
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
GOSTEI 0
Delphi32
31/01/2006
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é!
Até!
GOSTEI 0
Macario
31/01/2006
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!
GOSTEI 0
Delphi32
31/01/2006
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:
Ou melhor, a sql que eu te passei seria assim:
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é!
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é!
GOSTEI 0
Macario
31/01/2006
Valeu, [b:46fd2a1052]delphi32[/b:46fd2a1052]
funcionou legal.
8)
select CLIENTE,DATACAD,cast(null as datetime) as NOVOCAMPO from TABELA
funcionou legal.
8)
GOSTEI 0