SAP Funções SQL do HANA: Tipos e exemplos

⚡ Resumo Inteligente

SAP As funções SQL do HANA transformam valores dentro de uma consulta sem mover os dados para a camada de aplicação. Sete categorias abrangem conversão de tipo de dados, data e hora, texto completo, número, string, janela e operações diversas.

  • 🔄 Funções de conversão: CAST, TO_BIGINT, TO_ALPHANUM e TO_BINARY convertem um valor de um tipo de dado para outro.
  • 📅 Funções de data e hora: ADD_DAYS, ADD_MONTHS e ADD_SECONDS alteram ou reformatam os valores de data e hora.
  • 🔍 Funções de texto completo: A função SCORE e funções relacionadas classificam os resultados retornados por uma pesquisa de texto.
  • 🔢 Funções numéricas: ABS, ROUND e POWER aceitam entrada numérica e retornam um resultado numérico.
  • 🔤 Funções de string: ASCII, CHAR e CONCAT processam a entrada de caracteres e retornam um valor derivado.
  • 🪟 Funções da janela: RANK, DENSE_RANK e ROW_NUMBER dividem um conjunto de resultados em partições de janela.
  • 🧰 Diversos: CONVERT_CURRENCY e CURRENT_SCHEMA lidam com tarefas que não fazem parte dos outros seis grupos.

SAP Funções SQL do HANA

SAP Funções SQL do HANA

SAP O HANA fornece o seguinte SAP Funções HANA-

  1. Função de conversão de tipo de dados – A função de conversão de tipo de dados é usada para converter um tipo de dados em outro. Abaixo está uma lista de funções de conversão de tipo de dados - por exemplo, CAST, TO_ALPHANUM, TO_BIGINT, TO_BINARY etc.
  2. Funções de data e hora – As funções de data e hora são usadas para converter data/hora em um formato diferente. Por exemplo: ADICIONAR_DIAS, ADICIONAR_MESES, ADICIONAR_SEGUNDOS, etc.
  3. Funções de texto completo – A função Fulltext Functions é usada para pesquisa de texto. Exemplo: SCORE etc.
  4. Funções numéricas – As funções numéricas recebem um valor numérico ou uma sequência de caracteres numéricos como entrada e retornam valores numéricos. Exemplos: ABS, ROUND, POWER, etc.
  5. Funções de string – As funções de string recebem uma string como entrada, processam-na e retornam um valor de acordo com a função. Por exemplo: (ASCII, CHAR, CONCAT, etc.)
  6. Funções da janela – As funções de janela permitem ao usuário dividir o conjunto de resultados de uma consulta em grupos de linhas chamados partições de janela. Por exemplo, RANK(), DENSE_RANK(), ROW_NUMBER(), etc.
  7. Função Diversas- Existem mais algumas funções, que são usadas para trabalhos diversos. Por exemplo – CONVERT_CURRENCY, CURRENT_SCHEMA, etc.

Cada função acima é avaliada dentro do mecanismo do banco de dados, razão pela qual inserir a lógica em uma função é quase sempre mais rápido do que buscar linhas e processá-las em um aplicativo. Os exemplos abaixo usam a tabela DUMMY, uma tabela de sistema com uma única linha que existe exclusivamente para que uma expressão possa ser testada sem acessar dados reais.

Funções escalares, agregadas e de janela

Antes dos exemplos, é importante definir como uma função se comporta em uma consulta: quantas linhas são inseridas e quantas são retornadas.

Categoria Linhas de entrada: linhas de saída Precisa de um comando GROUP BY? Exemplos
Escalar Uma fileira para uma fileira Não MAIÚSCULAS, REDONDAS, ATÉ_A_DATA, FUNDIDAS
Agregado Muitas linhas em uma única linha Sim, a menos que o conjunto inteiro seja um único grupo. SOMA, AVG, CONTAGEM, MÍNIMO, MÁXIMO
Janela Muitas linhas para muitas linhas Não, usa OVER em vez de OVER. RANK, CLASSIFICAÇÃO_DENSA, NÚMERO_DA_LINHA, ATRASO
mesa Retorna um conjunto de resultados Usado na cláusula FROM DATA_DE_GERAÇÃO_DA_SÉRIE

A consequência prática é que uma função agregada oculta detalhes, enquanto uma função de janela os preserva. Solicitar o valor de cada funcionário juntamente com a média do seu departamento exige uma função de janela, pois um GROUP BY removeria as linhas individuais por completo.

comum SAP Funções HANA com exemplos

As instruções abaixo podem ser coladas diretamente no console SQL. Cada uma demonstra uma categoria da lista acima.

1) Funções de string. Essas funções recebem caracteres como entrada e retornam um valor derivado.

SELECT
  UPPER('sap hana')               AS UPPER_TEXT,
  LENGTH('SAP HANA')              AS TEXT_LENGTH,
  CONCAT('SAP ', 'HANA')         AS JOINED,
  SUBSTRING('SAP HANA', 5, 4)   AS PART,
  REPLACE('SAP HANA', 'HANA', 'S/4') AS SWAPPED,
  TRIM('  padded  ')             AS CLEANED
FROM DUMMY;

2) Funções numéricas. Vale a pena testar o comportamento de arredondamento, pois ROUND usa arredondamento comercial, enquanto FLOOR e CEIL sempre se movem em uma direção.

SELECT
  ABS(-45.7)          AS ABSOLUTE_VALUE,
  ROUND(123.4567, 2) AS ROUNDED,
  FLOOR(9.9)          AS ROUNDED_DOWN,
  CEIL(9.1)           AS ROUNDED_UP,
  POWER(2, 10)       AS RAISED,
  MOD(17, 5)         AS REMAINDER
FROM DUMMY;

3) Funções de data e hora. Esses são os mais frequentemente necessários para relatórios periódicos.

SELECT
  CURRENT_DATE                              AS TODAY,
  ADD_DAYS(CURRENT_DATE, 30)                AS IN_30_DAYS,
  ADD_MONTHS(CURRENT_DATE, -1)              AS LAST_MONTH,
  DAYS_BETWEEN('2026-01-01', CURRENT_DATE) AS ELAPSED,
  LAST_DAY(CURRENT_DATE)                    AS MONTH_END,
  WEEKDAY(CURRENT_DATE)                     AS DAY_INDEX
FROM DUMMY;

4) Funções de conversão. A conversão explícita impede a coerção silenciosa de tipos que torna uma cláusula WHERE mais lenta.

SELECT
  CAST('1234' AS INTEGER)               AS AS_NUMBER,
  TO_VARCHAR(CURRENT_DATE, 'DD.MM.YYYY') AS AS_TEXT,
  TO_DECIMAL(1234.5678, 10, 2)         AS AS_DECIMAL
FROM DUMMY;

O comportamento dos tipos e os limites de cada tipo de alvo são abordados em SAP tipos de dados HANA.

Explicação das funções de janela

Uma função de janela realiza um cálculo em um conjunto de linhas relacionadas à linha atual, sem agrupá-las. A cláusula OVER define esse conjunto e possui duas partes opcionais: PARTITION BY divide os dados em grupos e ORDER BY fixa a sequência dentro de cada grupo.

SELECT
  DEPARTMENT,
  EMP_NAME,
  SALARY,
  ROW_NUMBER() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS ROW_NUM,
  RANK()       OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS RANKING,
  DENSE_RANK() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS DENSE_RANKING,
  SUM(SALARY)  OVER (PARTITION BY DEPARTMENT) AS DEPT_TOTAL
FROM DHK_SCHEMA.EMPLOYEE;

As três funções de classificação diferem apenas quando os valores são iguais:

  • ROW_NUMBER Nunca há empates. Dois salários idênticos ainda recebem 1 e 2, escolhidos arbitrariamente.
  • RANK Atribui o mesmo número às linhas empatadas e, em seguida, pula. Duas linhas com 1 são seguidas por 3.
  • DENSE_RANK As linhas empatadas recebem o mesmo número e não são puladas. Duas linhas com número 1 são seguidas por linhas com número 2.

Use ROW_NUMBER para remover duplicados, RANK para classificação em estilo de competição e DENSE_RANK quando a sequência precisar permanecer ininterrupta. Os símbolos de comparação e lógicos usados ​​com essas funções são abordados em [referência]. SAP Operadores HANAe estrutura de declaração em SAP SQL HANA.

Perguntas Frequentes

DUMMY é uma tabela de sistema que contém exatamente uma linha. Ela permite que uma expressão ou função seja avaliada em uma instrução SELECT sem fazer referência a nenhuma tabela real.

Ambas as funções atribuem o mesmo número às linhas empatadas. A função RANK ignora os valores seguintes, portanto, duas primeiras posições são seguidas pela terceira. A função DENSE_RANK não ignora esses valores, então duas primeiras posições são seguidas pela segunda.

Sim. Descrever a transformação em linguagem simples retorna a função e a sintaxe correspondentes, o que é mais rápido do que examinar uma lista de referência com centenas de entradas.

Frequentemente. Uma função que envolve uma coluna filtrada impede a filtragem eficiente, e a IA pode reestruturar o predicado para que a coluna permaneça intacta. Confirme com o plano de execução.

Sim, mas aplicar isso à coluna força a avaliação em cada linha. Sempre que possível, transforme a constante para que a coluna ainda possa ser filtrada de forma eficiente.

Resuma esta postagem com: