Fonction de sous-chaîne Redshift

Fonction de sous-chaîne Redshift
Sous-chaîne rouge La fonction est-elle utilisée pour extraire la sous-chaîne requise de la chaîne existante en fonction de la position de départ et de la longueur de la sous-chaîne. Le but de la fonction de sous-chaîne est de renvoyer la partie spécifique de la chaîne. Les développeurs de base de données utilisent largement cette fonction dans les requêtes pour obtenir une partie spécifique de la chaîne. Ce blog décrit comment la fonction de sous-chaîne peut être utilisée de différentes manières pour interroger les données du cluster Redshift.

Syntaxe de la fonction de sous-chaîne

La syntaxe de base et la plus couramment utilisée pour la fonction de sous-chaîne est la suivante, où chaîne de caractères est la chaîne principale à partir de laquelle nous extraire les sous-chaînes. Le position de départ est la position du premier caractère de la sous-chaîne dans la chaîne principale, et le longueur_of_characters est le nombre de caractères dans la sous-chaîne:

1
substring (caractères_string, start_position, longueur_of_characters);

OU

1
substring (caractères_string de start_position [pour numéro_characters]);

Vous pouvez également extraire une sous-chaîne de données binaires en utilisant la syntaxe suivante, où Binary_expression est les données binaires avec le type de données Varbyte. Le start_byte est la position du premier octet de la sous-chaîne extraite des données binaires, et le numéro_bytes Le nombre d'octets est-il inclus.

Si vous ne spécifiez pas le numéro_bytes Dans la fonction de sous-chaîne, il extrait la sous-chaîne à partir de start_byte à la fin des données binaires.

1
substring (binary_expression, start_byte, numéro_bytes);


OU

1
substring (binary_expression, start_byte);

Utilisation de la fonction de sous-chaîne

Jusqu'à présent, nous avons discuté de la syntaxe de la fonction de sous-chaîne. Dans cette section, nous verrons comment cette fonction peut être utilisée. Discutons de quelques exemples pour comprendre le fonctionnement de la fonction de sous-chaîne:

La fonction de sous-chaîne peut être utilisée pour interroger les données du cluster Redshift avec les requêtes sélectionnées. Cette section utilisera la fonction de sous-chaîne avec la requête sélectionnée.

La requête suivante renvoie le Décalage vers le rouge Lorsqu'il est exécuté sur Redshift:

1
select substring ('aws redshift', 5,8);

Le tableau suivant montre le nombre de personnages dans le AWS Redshift chaîne. L'espace entre AWS et Redshift est également considéré comme un personnage.

UN W S R E D S H je F T
1 2 3 4 5 6 7 8 9 dix 11 12

La position de départ est de 5, et le personnage au 5ème compte est R. La longueur du caractère est de 8, ce qui signifie à partir de la lettre, R, huit caractères seront retournés.


De même, la requête suivante reviendra AWS Lorsqu'il est exécuté sur Redshift. Le premier caractère est A, et le nombre total de sous-chaînes est de 3; C'est pourquoi il renverra le substring AWS.

1
select substring ('aws redshift', 1,3);

Si la start_position + longueur_of_characters est supérieur au nombre total de caractères dans le chaîne de caractères, Le redshift renverra la valeur à partir de la position de départ à la fin de la chaîne.

De plus, si la longueur du caractère n'est pas spécifiée, la fonction de sous-chaîne renvoie la valeur à partir de la position de démarrage à la fin de la chaîne.

1
select substring ('aws redshift', 7,8);

OU

1
select substring ('AWS Redshift', 7);

Dans les deux cas, la sortie sera Dhift, Comme indiqué dans la figure ci-dessous:


Si la position de départ est nulle ou inférieure à la valeur nulle (négative), la fonction de sous-chaîne renverra une sous-chaîne commençant au premier caractère du chaîne de caractères avec une longueur de start_position + longueur_of_characters-1.

1
SELECT SUBSTRING («AWS Redshift», - 3,7);

La sortie sera AWS, Comme indiqué dans la figure ci-dessous:


Si la start_position + longueur_of_characters-1 est inférieur ou égal à zéro, la fonction de sous-chaîne renvoie une chaîne vide.

1
SELECT SUBSTRING («AWS Redshift», - 5,4);

La sortie de cette requête sera vide, Comme indiqué dans la figure ci-dessous:


La requête suivante créera le Table aws_redshift_substring dans le cluster Redshift avec les attributs spécifiés:

1
2
3
4
5
6
7
Créer une table aws_redshift_substring (
S_NO int,
PersonName Varchar (255)
));

Insérer des données dans le tableau à l'aide de la méthode d'insertion.

1
2
3
4
5
6
7
8
9
dix
11
12
13
14
15
16
17
18
19
Insérer dans AWS_RESSHIFT_SUBSTRING VALEUR (1, 'MR. Dwayne Johnson');
Insérer dans AWS_RESSHIFT_SUBSTRING VALEUR (2, 'MR. Vin Diesel');
Insérer dans AWS_RESSHIFT_SUBSTRING VALEURS (3, 'M. Will Smith ');
Insérer dans AWS_RESSHIFT_SUBSTRING VALEUR (4, 'M. Robert Downey Jr.');
Insérer dans AWS_RESSHIFT_SUBSTRING VALEUR (5, 'M. Chris Hemsworth');
Insérer dans les valeurs AWS_REDSHIFT_SUBSTRING (6, 'M. Leonardo DiCaprio');
Insérer dans AWS_RESSHIFT_SUBSTRING VALEUR (7, 'MR. Ryan Reynolds');
Insérer dans AWS_RESSHIFT_SUBSTRING VALEUR (8, 'M. Chris Pratt ');
Insérer dans AWS_RESSHIFT_SUBSTRING VALEURS (9, 'M. Hugh Jackman');
Insérer dans les valeurs AWS_REDSHIFT_SUBSTRING (10, 'M. Mark Wahlberg');

Les requêtes précédentes inséreront des données dans le tableau. Maintenant, sélectionnez les valeurs de la table en utilisant la requête suivante:

1
select * from aws_redshift_substring;
s_no nom d'une personne
1 M. Dwayne Johnson
2 M. vin Diesel
3 M. Will Smith
4 M. Robert Downey Jr.
5 M. Chris Hemsworth
6 M. Leonardo DiCaprio
7 M. Ryan Reynolds
8 M. Chris Pratt
9 M. Hugh Jackman
dix M. Mark Wahlberg

Maintenant, appliquez des fonctions de sous-chaîne sur ce tableau. Nous extrassons uniquement les noms, négligeant le titre. Pour cela, exécutez la requête suivante:

1
SELECT *, substring (PersonName, 4) comme new_name from aws_redshift_substring;

Cette requête renvoie les sous-chaînes du nom d'une personne colonne dans une nouvelle colonne.

s_no nom d'une personne nouveau nom
1 M. Dwayne Johnson Dwayne Johnson
2 M. vin Diesel vin Diesel
3 M. Will Smith Will Smith
4 M. Robert Downey Jr. Robert Downey Jr.
5 M. Chris Hemsworth Chris Hemsworth
6 M. Leonardo DiCaprio Leonardo DiCaprio
7 M. Ryan Reynolds Ryan Reynolds
8 M. Chris Pratt Chris Pratt
9 M. Hugh Jackman Hugh Jackman
dix M. Mark Wahlberg Mark Wahlberg


De même, nous pouvons obtenir des sous-chaînes de nom d'une personne Utilisation de la requête de sélection suivante avec la fonction de sous-chaîne:

1
SELECT *, substring (nom de personne à partir de 1 pour 3) comme titre de aws_redshift_substring;

Cela extraitra le seul titre tout en négligeant le nom complet.

S_no nom d'une personne titre
1 M. Dwayne Johnson M.
2 M. vin Diesel M.
3 M. Will Smith M.
4 M. Robert Downey Jr. M.
5 M. Chris Hemsworth M.
6 M. Leonardo DiCaprio M.
7 M. Ryan Reynolds M.
8 M. Chris Pratt M.
9 M. Hugh Jackman M.
dix M. Mark Wahlberg M.

Conclusion

Cet article a expliqué comment nous pourrions utiliser la fonction de sous-chaîne pour exécuter des requêtes dans le cluster Redshift. L'extraction des données modifiées de la base de données est une grande tâche et peut être effectuée à l'aide de la fonction de sous-chaîne. L'utilisation de la fonction de sous-chaîne peut aider à éviter la modification des données de requête post-requête car elle obtient les données modifiées.