Eu tenho uma tabela (SQL Server) que contém 3 tipos de resultados: FLOAT, NVARCHAR (30) ou DATETIME (3 colunas separadas). Quero garantir que, para qualquer linha, apenas uma coluna tenha um resultado e as outras sejam NULL. Qual é a restrição de verificação mais simples para conseguir isso?
O contexto para isso é tentar atualizar a capacidade de capturar resultados não numéricos em um sistema existente. Adicionar duas novas colunas à tabela com uma restrição para impedir mais de um resultado por linha foi a abordagem mais econômica, não necessariamente a correta.
Atualização: Desculpe, tipo de dados snafu. Infelizmente, não pretendia que os tipos de resultados indicados fossem interpretados como tipos de dados do SQL Server, apenas termos genéricos, corrigidos agora.
fonte
Aqui está uma solução PostgreSQL usando as funções de matriz incorporadas :
fonte