Como usar o elenco conversões de tipo de dados com sql

Idealmente, cada coluna em uma tabela de banco de dados SQL tem uma escolha perfeita de tipo de dados. Neste mundo não-ideal, no entanto, exatamente o que a escolha perfeita pode ser nem sempre é clara. Ao definir uma tabela de banco de dados, suponha que você atribuir um tipo de dados a uma coluna que funciona perfeitamente para o seu aplicativo atual.

Suponha que, mais tarde, você quer expandir o escopo da sua aplicação - ou escrever um aplicativo totalmente novo que usa os dados de forma diferente. Este novo uso poderia exigir um tipo de dados diferente daquele que você originalmente escolheu.

Você pode querer comparar uma coluna de um tipo em uma tabela com uma coluna de um tipo diferente em uma tabela diferente. Por exemplo, você poderia ter datas armazenadas como dados de caracteres em uma tabela e, como dados de data em outra tabela.

Mesmo que ambas as colunas contêm o mesmo tipo de informações (datas, por exemplo), o fato de que os tipos são diferentes podem impedi-lo de fazer a comparação. Nos padrões SQL primeiros, SQL-86 e SQL-89, tipo de incompatibilidade representava um grande problema. SQL-92, no entanto, apresentou uma solução fácil de usar no FUNDIDA expressão.

o FUNDIDA expressão converte os dados da tabela ou variáveis ​​hospedeiras de um tipo para outro tipo. Depois de fazer a conversão, você pode prosseguir com a operação ou análise que originalmente previsto.

Naturalmente, você enfrenta algumas restrições ao usar o FUNDIDA expressão. Você não pode simplesmente indiscriminadamente converter dados de qualquer tipo em qualquer outro tipo. Os dados que você está convertendo deve ser compatível com o novo tipo de dados. Você pode, por exemplo, usar FUNDIDA para converter o CHAR (10) cadeia de caracteres ‘2007-04-26’ ao ENCONTRO tipo.

Mas você não pode usar FUNDIDA para converter o CHAR (10) cadeia de caracteres `rinoceronte` ao ENCONTRO tipo. Você não pode converter um INTEIRO ao SMALLINT digita se o primeiro exceder o tamanho máximo de um SMALLINT.

Você pode converter um item de qualquer tipo de personagem para qualquer outro tipo (como numérico ou data) forneceu o valor do item tem a forma de um literal do novo tipo. Por outro lado, você pode converter um item de qualquer tipo a qualquer um dos tipos de caracteres, desde que o valor do item tem a forma de um literal do tipo original.

A lista a seguir descreve algumas conversões adicionais que você pode fazer:

Qualquer tipo numérico para qualquer outro tipo numérico. Se a conversão de um tipo menos fractionally preciso, as rodadas de sistema ou trunca o resultado.

  • Qualquer tipo numérico exato para um único intervalo de componente, como DIA INTERVALO ou segundo intervalo.

    Video: Curso de C# - Aula 9 - Conversão de Dados - eXcript

  • Qualquer ENCONTRO a um TIMESTAMP. A parte da hora do TIMESTAMP preenche com zeros.

  • Qualquer TEMPO a um TEMPO com uma precisão fracionários segundos diferente ou uma TIMESTAMP. A parte data do TIMESTAMP preenche com a data atual.

  • Qualquer TIMESTAMP a um ENCONTRO, uma TEMPO, ou um TIMESTAMP com uma precisão fracionários segundos diferente.

  • Qualquer ano-mês INTERVALO para um tipo numérico exato ou outro ano-mês INTERVALO com uma precisão de campo líder diferente.



  • Qualquer dia de tempo INTERVALO para um tipo numérico exato ou outro dia de tempo INTERVALO com uma precisão de campo líder diferente.

  • Como usar CAST dentro de SQL

    Suponha que você trabalha para uma empresa que mantém o controle de potenciais empregados, bem como os funcionários que você realmente contratados. Você lista os candidatos em uma tabela chamada PROSPECT, e você distingui-los por seus números de Segurança Social, que você acontecer para armazenar como um CHAR (9) tipo.

    Você lista os empregados em uma tabela chamada EMPREGADO, e você distingui-los por seus números de Segurança Social, que são da INTEIRO tipo. agora você quer gerar uma lista de todas as pessoas que aparecem em ambas as tabelas. Você pode usar FUNDIDA para executar a tarefa:

    SELECT * DE EMPLOYEEWHERE EMPLOYEE.SSN = CAST (PROSPECT.SSN AS INTEGER) -

    Como usar CAST entre SQL ea linguagem hospedeira

    O uso de chave de FUNDIDA é lidar com tipos de dados que estão disponíveis no SQL mas não na linguagem host que você usa. A lista a seguir oferece alguns exemplos desses tipos de dados:

    Video: Curso de SQL Server para Iniciantes (Aula 4) - Criando Tabelas (Parte 1)

    • SQL tem DECIMAL e NUMÉRICO, mas Fortran e Pascal não.

    • SQL tem FLUTUADOR e REAL, mas COBOL padrão não.

    • SQL tem DATA HORA, que nenhuma outra língua tem.

    Suponha que você queira usar Fortran ou Pascal às tabelas de acesso com DECIMAL (5,3) colunas, e você não quer qualquer falha resultar de converter esses valores para o REAL Tipo de dados utilizado por FORTRAN e Pascal. Você pode executar essa tarefa usando FUNDIDA para mover os dados para e de variáveis ​​de host caráter cordas.

    Video: 37 Conversão de Tipos de Dados no SQL Server com Cast e Convert

    Você recupera um salário numérico de 198,37 como um CHAR (10) valor de ‘0.000.198,37’. Então, se você deseja atualizar o salário de 203,74, você pode colocar esse valor em um CHAR (10) Como ‘0.000.203,74’. Primeiro você usar FUNDIDA para mudar o SQL DECIMAL (5,3) Tipo de dados para o CHAR (10) digite para o funcionário cujo número de identificação que você está armazenando na variável do host : emp_id_var, do seguinte modo:

    SELECT CAST (salário como CHAR (10)) EM: salary_varFROM EMPWHERE EmpID =: emp_id_var -

    A aplicação Fortran ou Pascal examina o valor caráter cordas, resultando em : salary_var, possivelmente define a seqüência para um novo valor de ‘000.203,74’, e atualiza o banco de dados chamando o seguinte código SQL:

    ACTUALIZAÇÃO EMPSET salário = CAST (: salary_var como decimal (5,3)) ONDE EmpID =: emp_id_var -

    Lidar com valores de caracteres de texto, como ‘000.198,37’ é estranho em Fortran ou Pascal, mas você pode escrever um conjunto de sub-rotinas para fazer as manipulações necessárias. Você pode, então, recuperar e atualizar quaisquer dados SQL de qualquer linguagem de host, e obter - e definir - valores exatos.

    A idéia geral é que FUNDIDA é mais valioso para converter entre tipos de host e banco de dados, em vez de para converter dentro do banco de dados.


    Publicações relacionadas