Archive

Author Archive

Teradata – fonctions

December 31st, 2014 No comments
  • Fonctions qui proviennent d’oracle

La migration de Teradata en V14 donne accès à des fonctions compatibles avec Oracle. En voici quelques exemples.

oreplace(‘chaîne’, ‘a_remplacer’,’par’)

Cette fonction permet de remplacer l’intégralité de la chaîne de texte « a_remplacer » par la chaîne « par » dans « chaîne ».

Exemple :

Seule la chaîne de caractère “abc” complète a été remplacée par “efg”.

  

otranslate(‘chaîne’, ‘a_remplacer’,’par’)

Cette fonction permet de remplacer chaque caractère de « a_remplacer » par chaque caractère de « par » dans « chaîne ».

Exemple :

Tous les “a” sont remplacés par un “e”, de même pour “b” par “f” et “c” par “g”.

Si « a_remplacer » dans la fonction OTRANSLATE contient un seul caractère alors la fonction aura le même effet que la fonction OREPLACE avec également un seul caractère dans OREPLACE.

 

  • Fonctions non ANSI

Elles passent très bien dans « Teradata SQL Assistant » mais elles ne passent pas dans un script ou dans la création d’une vue par exemple.

left(‘chaîne’, ‘nb caract à garder’)

*** Failure 3706 Syntax error: expected something between ‘,’ and the ‘LEFT’ keyword.

Statement# 1, Info =28

*** Total elapsed time was 1 second.

.

substr(‘chaîne’, ‘caract de départ’,  ‘nb caract à garder’)

Avant l’arrivée de la V14, il y avait le même problème avec la fonction length qui devait être remplacée par la fonction character_length.

.

  • Fonctions qui ne passent pas sous SQL Assistant mais qui passent dans un bteq

Certaines fonctions ne passent pas sous SQL Assistant alors que dans des scripts elles fonctionnent très bien. Il est donc dommage de s’en passer. Voici deux exemples de fonctions :

RPAD(‘chaîne’,’nb caract’,’chaîne de complément’)

 

Sous SQL Assistant, une fenêtre s’ouvre

Puis une autre :

Pour obtenir le résultat dans UltraEdit :

Dans un script, nous avons directement la donnée suivante :

abcxxx

.

LPAD(‘chaîne’,’nb caract’,’chaîne de complément’)

C’est le même principe que pour la fonction RPAD.

Dans un script, nous avons directement la donnée suivante :

xxxabc

Categories: Trucs & astuces Tags:

Teradata – Gestion des nulls

December 31st, 2014 No comments

Le but de cet article est voir comment il est possible de gérer les valeurs nulles.

Partons du principe que nous avons les tables suivantes à notre disposition.

.
  • Problématique

Nous voulons tous les enregistrements de la table 2 qui ne sont pas présents dans la table 1.

Le résultat attendu est : ‘D’ et ‘E’.

Par un minus, voilà ce qu’on obtient.

Par une sous-requête, voilà ce qu’on obtient.

Le résultat attendu est renvoyé correctement avec le requête utilisant le minus mais pas avec la sous-requête.

Essayons de faire le contraire pour voir : tous les enregistrements de la table 1 qui ne sont pas dans la table 2.

Le résultat attendu est : ‘G’ et null.

Par le minus

Par la sous-requête

Le résultat est correct avec le minus et partiel avec la sous-requête.

Pourquoi ?

Read more…

Categories: Trucs & astuces Tags: