Redshift Substring -funksjon

Redshift Substring -funksjon
Redshift Substring er funksjonen som brukes til å trekke ut den nødvendige substring fra den eksisterende strengen basert på startposisjonen og lengden på substringen. Hensikten med substringfunksjonen er å returnere den spesifikke delen av strengen. Databaseutviklere bruker denne funksjonen mye i spørsmål for å få en bestemt del av strengen. Denne bloggen beskriver hvordan Substring -funksjonen kan brukes på forskjellige måter å spørre data fra Redshift Cluster.

Syntaks for substringfunksjon

Den grunnleggende og mest brukte syntaks for substringfunksjonen er som følger, hvor karakter_string er hovedstrengen som vi vil trekke ut underlag. De startposisjon er plasseringen av den første karakteren til substringen i hovedstrengen, og lengde_of_characters er antall tegn i substringen:

1
substring (karakter_string, start_position, lengde_of_characters);

ELLER

1
substring (karakter_string fra start_position [for number_characters]);

Du kan også trekke ut en substring av binære data ved hjelp av følgende syntaks, hvor Binary_expression er de binære dataene med datatype varbyte. De start_byte er plasseringen av den første byten til substringen hentet fra binære data, og NUMMER_BYTES er antall byte som substringen vil omfatte.

Hvis du ikke spesifiserer NUMMER_BYTES I substringfunksjonen vil den trekke ut substringen fra og med start fra start_byte til slutten av de binære dataene.

1
substring (binary_expression, start_byte, number_bytes);


ELLER

1
substring (binary_expression, start_byte);

Bruke substringfunksjon

Så langt har vi diskutert syntaksen til substringfunksjonen. I denne delen vil vi se hvordan denne funksjonen kan brukes. La oss diskutere noen eksempler for å forstå arbeidet med Substring -funksjonen:

Substring -funksjonen kan brukes til å spørre data fra Redshift -klyngen med Select Queries. Denne delen vil bruke substringfunksjonen med SELECT -spørringen.

Følgende spørring vil returnere Rødforskyvning Når det er utført på rødforskyvning:

1
velg Substring ('AWS Redshift', 5,8);

Følgende tabell viser karaktertallet i AWS Redshift streng. Plassen mellom AWS og rødforskyvning regnes også som en karakter.

EN W S R E D S H Jeg F T
1 2 3 4 5 6 7 8 9 10 11 12

Startposisjonen er 5, og karakteren ved 5. telling er r. Lengden på karakteren er 8, noe som betyr å starte fra bokstaven, r, åtte tegn vil bli returnert.


Tilsvarende vil følgende spørsmål tilbake Aws Når den ble utført på rødforskyvning. Den første tegnet er en, og det totale antallet underlag er 3; det er derfor det vil returnere AWS -substringen.

1
Velg Substring ('AWS Redshift', 1,3);

Hvis start_position+lengde_of_characters er større enn det totale antallet tegn i karakter_string, Redshift vil returnere verdien fra startposisjon til slutten av strengen.

Hvis lengden på tegnet ikke er spesifisert, returnerer Substring -funksjonen verdien fra startposisjon til slutten av strengen.

1
Velg Substring ('AWS Redshift', 7,8);

ELLER

1
velg Substring ('AWS Redshift', 7);

I begge tilfeller vil utgangen være Dshift, Som vist på figuren nedenfor:


Hvis startposisjonen er null eller mindre enn null (negativ) verdi, vil substringfunksjonen returnere en substring som begynner ved den første karakteren av karakter_string med en lengde på start_position+lengde_of_characters-1.

1
velg Substring ('AWS Redshift',-3,7);

Utgangen vil være Aws, Som vist på figuren nedenfor:


Hvis start_position+lengde_of_characters-1 er mindre enn eller lik null, vil substringfunksjonen returnere en tom streng.

1
Velg Substring ('AWS Redshift',-5,4);

Utgangen for denne spørringen vil være tømme, Som vist på figuren nedenfor:


Følgende spørsmål vil opprette AWS_REDSHIFT_SUBSTRING TABLE inn i rødforskyvningsklyngen med de spesifiserte attributtene:

1
2
3
4
5
6
7
Lag tabell aws_redshift_substring (
S_no int,
PersonName Varchar (255)
);

Sett inn data i tabellen ved hjelp av innsatsmetoden.

1
2
3
4
5
6
7
8
9
10
11
12
1. 3
14
15
16
17
18
19
Sett inn AWS_REDSHIFT_SUBSTRING VERDIER (1, 'MR. Dwayne Johnson');
Sett inn AWS_REDSHIFT_SUBSTRING VERDIER (2, 'MR. Vin diesel ');
Sett inn AWS_REDSHIFT_SUBSTRING VERDIER (3, 'MR. Vil Smith ');
Sett inn AWS_REDSHIFT_SUBSTRING VERDIER (4, 'MR. Robert Downey jr.');
Sett inn AWS_REDSHIFT_SUBSTRING VERDIER (5, 'MR. Chris Hemsworth ');
Sett inn AWS_REDSHIFT_SUBSTRING VERDIER (6, 'MR. Leonardo DiCaprio ');
Sett inn AWS_REDSHIFT_SUBSTRING VERDIER (7, 'MR. Ryan Reynolds ');
Sett inn AWS_REDSHIFT_SUBSTRING VERDIER (8, 'MR. Chris Pratt ');
Sett inn AWS_REDSHIFT_SUBSTRING VERDIER (9, 'MR. Hugh Jackman');
Sett inn AWS_REDSHIFT_SUBSTRING VERDIER (10, 'MR. Mark Wahlberg');

De forrige spørsmålene vil sette inn data i tabellen. Velg nå verdiene fra tabellen ved å bruke følgende spørsmål:

1
Velg * fra AWS_REDSHIFT_SUBSTRING;
s_no personnavn
1 MR. Dwayne Johnson
2 MR. Vin Diesel
3 MR. Vil Smith
4 MR. Robert Downey jr.
5 MR. Chris Hemsworth
6 MR. Leonardo DiCaprio
7 MR. Ryan Reynolds
8 MR. Chris Pratt
9 MR. Hugh Jackman
10 MR. Mark Wahlberg

Nå, bruk noen substringfunksjoner på denne tabellen. Vi trekker ut bare navnene og forsømmer tittelen. For dette, kjør følgende spørsmål:

1
Velg *, Substring (PersonName, 4) som New_Name fra AWS_REDSHIFT_SUBSTRING;

Denne spørringen vil returnere underlagene til personnavn kolonne inn i en ny kolonne.

s_no personnavn New_name
1 MR. Dwayne Johnson Dwayne Johnson
2 MR. Vin Diesel Vin Diesel
3 MR. Vil Smith Vil Smith
4 MR. Robert Downey jr. Robert Downey jr.
5 MR. Chris Hemsworth Chris Hemsworth
6 MR. Leonardo DiCaprio Leonardo DiCaprio
7 MR. Ryan Reynolds Ryan Reynolds
8 MR. Chris Pratt Chris Pratt
9 MR. Hugh Jackman Hugh Jackman
10 MR. Mark Wahlberg Mark Wahlberg


Tilsvarende kan vi få underlag av personnavn Bruke følgende velg spørring sammen med substringfunksjonen:

1
Velg *, Substring (personnavn fra 1 for 3) som tittel fra AWS_REDSHIFT_SUBSTRING;

Dette vil hente ut den eneste tittelen mens du forsømmer hele navnet.

S_no personnavn tittel
1 MR. Dwayne Johnson MR.
2 MR. Vin Diesel MR.
3 MR. Vil Smith MR.
4 MR. Robert Downey jr. MR.
5 MR. Chris Hemsworth MR.
6 MR. Leonardo DiCaprio MR.
7 MR. Ryan Reynolds MR.
8 MR. Chris Pratt MR.
9 MR. Hugh Jackman MR.
10 MR. Mark Wahlberg MR.

Konklusjon

Denne artikkelen diskuterte hvordan vi kunne bruke substringfunksjonen til å kjøre spørsmål i Redshift Cluster. Å trekke ut modifiserte data fra databasen er en stor oppgave og kan utføres ved hjelp av substringfunksjonen. Å bruke substringfunksjonen kan bidra til å unngå datamodifisering.