22nd Jan 2025 7 minutos de leitura Função SQL CAST(): Visão geral Jill Thornhill análise de dados Índice Sintaxe da função SQL CAST() Exemplos da função CAST() 1. uso de números como cadeias de caracteres 2. união de tabelas em colunas com tipos de dados diferentes 3. Alteração dos tipos de campo em uma operação de ETL Quando usar CAST() Tipos de dados suportados por dialetos SQL populares 1. SQL Server 2. MySQL 3. Oracle 4. PostgreSQL O que vem a seguir com a função SQL CAST()? A função SQL CAST() converte um tipo de dados em outro. Este artigo discute para que serve a função e quando e como você pode usá-la. Nos bancos de dados relacionais, cada coluna tem um tipo de dados definido que controla o tipo de dados armazenados na coluna e como esses dados podem ser usados. Por exemplo, a descrição de um produto provavelmente será armazenada como uma cadeia de texto, e você não poderá usá-la para aritmética (por exemplo, calcular totais). Por outro lado, o saldo devedor de um cliente seria armazenado como dados numéricos e poderia ser usado em cálculos. O SQL tem conjuntos separados de funções para operações numéricas e para manipulação de strings. Ocasionalmente, você pode querer substituir essas regras e tratar uma coluna de uma forma diferente das operações usuais de seu tipo de dados. É nesse ponto que a função SQL CAST() se torna útil. Ela converte uma parte dos dados em um tipo de dados diferente em sua consulta. Veremos alguns exemplos de quando você pode precisar fazer isso um pouco mais adiante neste artigo. Se quiser obter uma compreensão mais profunda do SQL, dê uma olhada em nossa trilha de aprendizado SQL de A a Z. Esse conjunto de 7 cursos leva você do nível iniciante até tópicos avançados de SQL. Você ganhará experiência prática ao trabalhar em mais de 700 exercícios guiados; ao longo do caminho, você se familiarizará com os conceitos de bancos de dados relacionais. Tudo o que você precisa é de um navegador e uma conexão com a Internet, e a ajuda está disponível em todas as etapas. Sintaxe da função SQL CAST() A função CAST() tem a mesma sintaxe simples em todos os dialetos SQL: CAST(value AS type) value pode ser qualquer valor SQL válido. Pode ser o nome de uma coluna, o resultado de um cálculo, o resultado de uma função ou um valor literal. type é o tipo de dados desejado, ou seja, no que você deseja que o valor seja convertido. Por exemplo, suponha que a coluna date_hired na tabela employee tenha sido definida como um tipo de dados DATE. Você deseja preenchê-la com a data de hoje usando a função GETDATE(), que retorna um valor no tipo de dados DATETIME. Você pode converter o valor DATETIME em um valor DATE usando essa sintaxe: INSERT INTO employee (date_hired) VALUES (CAST(GETDATE() AS DATE)); Exemplos da função CAST() Vejamos alguns exemplos de como o CAST() pode ser usado em seu trabalho diário. 1. uso de números como cadeias de caracteres Uma tabela chamada employee tem o campo department, que é definido como o tipo de dados INT (inteiro). Os três primeiros dígitos desse código indicam a seção da organização. A gerência quer saber quantas pessoas estão empregadas em cada seção. Para isso, precisamos extrair os três primeiros dígitos do departamento. Precisamos converter esse valor INT em um valor VARCHAR e, em seguida, usar a função string LEFT() para recuperar os três primeiros caracteres. A consulta tem a seguinte aparência: SELECT LEFT(CAST (department AS VARCHAR(15)), 3) AS section, COUNT(*) AS employee_count FROM employee GROUP BY LEFT(CAST (department AS VARCHAR(15)), 3) ORDER BY LEFT(CAST (department AS VARCHAR(15)), 3); Observe que CAST() está embutido na função LEFT() e que as funções devem ser repetidas nas cláusulas GROUP BY e ORDER BY. 2. união de tabelas em colunas com tipos de dados diferentes A tabela employee no exemplo anterior precisa ser unida a outra tabela department_details, que tem o código de campo definido como VARCHAR. Normalmente, unir a coluna department em employee com a coluna code coluna em department_details resultaria em um erro, pois os campos têm tipos de dados diferentes. Sabemos que o código do departamento sempre será numérico, portanto, podemos contornar o problema convertendo o código em um número inteiro. A consulta teria a seguinte aparência: SELECT department_name, name, date_hired FROM employee JOIN department_details ON department = CAST(code AS int); 3. Alteração dos tipos de campo em uma operação de ETL Um processo de fabricação tem sensores em vários pontos que geram um status de alarme sempre que uma condição incomum é encontrada. Esses alarmes são carregados automaticamente em uma tabela chamada alarms. Um processo diário copia as linhas de alarms em uma tabela de depósito chamada alarm_historyque pode ser usada para análise. A tabela alarms é então limpa. A tabela alarms tem a seguinte aparência: clock_time varchar(20), sensor_no int, status_code char(2) A tabela alarm_history é semelhante, mas a hora do relógio deve ser armazenada como DATETIME, pois os gerentes precisarão que ela seja extraída e analisada por um intervalo de datas. Ela é definida assim: clock_time datetime, sensor_no int, status_code char(2) A consulta que copia os dados para alarm_history precisa converter o VARCHAR clock_time em um tipo de dados DATETIME. Tem o seguinte aspecto: INSERT INTO alarm_history SELECT CAST(clock_time AS DATETIME), sensor_no, status_code FROM alarms; Quando usar CAST() Vamos dar uma olhada em alguns cenários em que a função SQL CAST() pode ser útil. Operações de ETL (Extrair, Transformar, Carregar): A ETL obtém dados de uma ou mais fontes e os transforma na forma necessária para um uso diferente. Por exemplo, você pode pegar dados armazenados em um sistema usado para as operações diárias de uma empresa e carregá-los em um data warehouse adequado para análise de marketing. Os tipos de dados no data warehouse podem ser diferentes daqueles do sistema original, portanto, o CAST() é importante nesse caso. Uso de funções pertencentes a um tipo de dados diferente: Pode haver ocasiões em que você queira usar funções de cadeia de caracteres em dados numéricos, por exemplo, para formatar os dados em um relatório. Da mesma forma, você pode querer usar funções numéricas e agregados em dados de cadeia (desde que saiba que a coluna contém números). Unir tabelas em colunas com tipos de dados diferentes: Isso não costuma acontecer se o banco de dados tiver sido bem projetado, mas, na prática, pode ocorrer. Trabalhar com datas armazenadas como strings. Os projetistas de banco de dados às vezes armazenam datas como strings de texto; essas datas não podem ser usadas para funções e cálculos de datas. Você pode contornar isso usando CAST(). Uso de SQL dinâmico: Se estiver escrevendo programas ou procedimentos armazenados, talvez seja necessário incorporar dados em uma cadeia de caracteres para criar uma consulta dinâmica. Se a consulta retornar um erro devido a uma incompatibilidade de tipo de dados, a função CAST() provavelmente é a solução para o seu problema. Tipos de dados suportados por dialetos SQL populares 1. SQL Server O SQL Server permite que qualquer um de seus tipos de dados válidos seja usado como parâmetro de tipo na função CAST(). Algumas conversões não são permitidas quando os tipos de dados não são compatíveis. Você pode verificar quais conversões são permitidas na documentação do T-SQL. Para obter a cobertura completa da função CAST() no SQL Server, consulte a documentação da Microsoft sobre as funções CAST() e CONVERT(). 2. MySQL O MySQL não é padrão, pois não usa o tipo de dados para o parâmetro type. Em vez disso, ele tem um conjunto fixo de valores permitidos: BINARY CHAR (Observação: esse tipo é usado para qualquer tipo de valor de cadeia de caracteres, por exemplo, VARCHAR ou TEXT. O mecanismo de banco de dados decidirá sobre o tipo de dados produzido, dependendo do comprimento do texto). DATE DATETIME DECIMAL DOUBLE FLOAT JSON NCHAR REAL SIGNED SPACIAL_TYPE UNSIGNED YEAR Você pode encontrar mais informações sobre CAST() no manual de referência do MYSQL. 3. Oracle O Oracle usa o tipo de dados para o parâmetro type. A documentação tem uma tabela de tipos de dados que são válidos para conversão. 4. PostgreSQL O PostgreSQL usa o tipo de dados para o parâmetro type. A documentação do PostgreSQL não indica explicitamente quais conversões são permitidas, mas as conversões padrão entre cadeias de caracteres, números e datas são aceitáveis. O PostgreSQL permite que você crie suas próprias regras de conversão para conversões não-padrão usando a função CREATE_CAST. O que vem a seguir com a função SQL CAST()? Fizemos uma introdução completa à função SQL CAST() e como usá-la. Se você estiver procurando um programa de estudo abrangente que cubra não apenas o básico, mas também tópicos avançados - inclusive CAST() -, quero recomendar mais uma vez nosso curso SQL de A a Z. Ele está repleto de dicas úteis, exercícios práticos e percepções de especialistas. Boa sorte e bom aprendizado! Tags: análise de dados