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 ( |
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'); |
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.