Składnia funkcji substring
Podstawowa i najczęściej używana składnia dla funkcji pod substring jest następująca, gdzie łańcuch znaków jest głównym ciągiem, z którego wyodrębnimy podajniki. pozycja startowa jest pozycją pierwszego charakteru podłańca w głównym ciągu i długość_ofarakterów to liczba znaków w podjazdach:
1 | Substring (charakter_string, start_position, długość_of_characters); |
LUB
1 | Substring (charakter_string z start_position [dla numeru_haracters]); |
Możesz także wyodrębnić podłoże danych binarnych za pomocą następującej składni, gdzie Binary_Expression to dane binarne z typem danych varbyte. start_byte jest pozycją pierwszego bajtu podłacia wyodrębnionego z danych binarnych i Number_Bytes to liczba bajtów, które podłoże będzie zawierać.
Jeśli nie określisz Number_Bytes W funkcji podkładu wyodrębni podłoże zaczynające start_byte do końca danych binarnych.
1 | Substring (Binary_Expression, start_byte, numer_bytes); |
LUB
1 | Substring (Binary_Expression, start_byte); |
Za pomocą funkcji podłoża
Do tej pory omówiliśmy składnię funkcji substring. W tej sekcji zobaczymy, w jaki sposób można użyć tej funkcji. Omówmy kilka przykładów, aby zrozumieć działanie funkcji podkładu:
Funkcję podłoża może być używana do zapytania o dane z klastra Redshift z wybranymi zapytaniami. W niniejszej sekcji użyje funkcji podłoża z zapytaniem Wybierz.
Następujące zapytanie zwróci PRZESUNIĘCIE KU CZERWIENI Po wykonaniu na przesunięciu ku czerwieni:
1 | Wybierz Substring („AWS Redshift”, 5,8); |
Poniższa tabela pokazuje liczbę znaków w AWS Redshift strunowy. Przestrzeń między AWS i przesunięcie ku czerwieni jest również liczony jako postać.
A | W | S | R | mi | D | S | H | I | F | T | |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
Pozycja początkowa to 5, a znak z 5. liczby to r. Długość postaci wynosi 8, co oznacza, że zaczyna się od litery, r, osiem znaków zostanie zwróconych.
Podobnie powróci następujące zapytanie AWS Po wykonaniu podczas przesunięcia ku czerwieni. Pierwszą postacią jest A, a całkowita liczba podłoża wynosi 3; Dlatego zwróci podłoże AWS.
1 | Wybierz Substring („AWS Redshift”, 1,3); |
Jeśli start_position+Long_Of_Characters jest większy niż całkowita liczba znaków w łańcuch znaków, Redshift zwróci wartość od pozycji początkowej do końca ciągu.
Ponadto, jeśli długość znaku nie jest określona, funkcja podkładu zwraca wartość od pozycji początkowej do końca ciągu.
1 | Wybierz Substring („AWS Redshift”, 7,8); |
LUB
1 | Wybierz Substring („AWS Redshift”, 7); |
W obu przypadkach wyjście będzie Dshift, Jak pokazano na poniższym rysunku:
Jeśli pozycja początkowa jest zerowa lub mniejsza niż zerowa (ujemna), funkcja podkładu zwróci podłoże zaczynające się na pierwszym charakterze łańcuch znaków z długością start_position+długość_of_characters-1.
1 | Wybierz Substring („AWS Redshift”,-3,7); |
Wyjście będzie AWS, Jak pokazano na poniższym rysunku:
Jeśli start_position+długość_of_characters-1 jest mniejsza lub równa zero, funkcja podrzędu zwróci pusty ciąg.
1 | Wybierz Substring („AWS Redshift”,-5,4); |
Wyjście tego zapytania będzie pusty, Jak pokazano na poniższym rysunku:
Poniższe zapytanie utworzy Tabela AWS_REDSHIFT_SUBSTRING do klastra Redshift z określonymi atrybutami:
1 2 3 4 5 6 7 | Utwórz tabelę AWS_REDSHIFT_SUBSSTRING ( |
Włóż dane do tabeli za pomocą metody wstawienia.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Wstaw wartości AWS_REDSHIFT_SUBSSTRING (1, „MR. Dwayne Johnson'); |
Poprzednie zapytania wstawią dane do tabeli. Teraz wybierz wartości z tabeli za pomocą następującego zapytania:
1 | Wybierz * z AWS_REDSHIFT_SUBSSTRING; |
S_NO | imię osoby |
---|---|
1 | Pan. Dwayne Johnson |
2 | Pan. Vin Diesel |
3 | Pan. Will Smith |
4 | Pan. Robert Downey Jr. |
5 | Pan. Chris Hemsworth |
6 | Pan. Leonardo DiCaprio |
7 | Pan. Ryan Reynolds |
8 | Pan. Chris Pratt |
9 | Pan. Hugh Jackman |
10 | Pan. Mark Wahlberg |
Teraz zastosuj niektóre funkcje podkładu w tej tabeli. Wyodrębniamy tylko nazwy, zaniedbując tytuł. W tym celu uruchom następujące zapytanie:
1 | Wybierz *, Substring (personName, 4) jako nowa nazwa_patilna z AWS_REDSHIFT_SUBSSTRING; |
To zapytanie zwróci podkład imię osoby Kolumna do nowej kolumny.
S_NO | imię osoby | nowe imie |
---|---|---|
1 | Pan. Dwayne Johnson | Dwayne Johnson |
2 | Pan. Vin Diesel | Vin Diesel |
3 | Pan. Will Smith | Will Smith |
4 | Pan. Robert Downey Jr. | Robert Downey Jr. |
5 | Pan. Chris Hemsworth | Chris Hemsworth |
6 | Pan. Leonardo DiCaprio | Leonardo DiCaprio |
7 | Pan. Ryan Reynolds | Ryan Reynolds |
8 | Pan. Chris Pratt | Chris Pratt |
9 | Pan. Hugh Jackman | Hugh Jackman |
10 | Pan. Mark Wahlberg | Mark Wahlberg |
Podobnie możemy uzyskać podstęp imię osoby Korzystanie z następującego zapytania wyboru wraz z funkcją podłoża:
1 | Wybierz *, Substring (personName od 1 za 3) jako tytuł z AWS_REDSHIFT_SUBSSTRING; |
To wyodrębni jedyny tytuł, jednocześnie zaniedbując pełną nazwę.
S_NO | imię osoby | tytuł |
---|---|---|
1 | Pan. Dwayne Johnson | Pan. |
2 | Pan. Vin Diesel | Pan. |
3 | Pan. Will Smith | Pan. |
4 | Pan. Robert Downey Jr. | Pan. |
5 | Pan. Chris Hemsworth | Pan. |
6 | Pan. Leonardo DiCaprio | Pan. |
7 | Pan. Ryan Reynolds | Pan. |
8 | Pan. Chris Pratt | Pan. |
9 | Pan. Hugh Jackman | Pan. |
10 | Pan. Mark Wahlberg | Pan. |
Wniosek
W tym artykule omówiono, w jaki sposób moglibyśmy użyć funkcji substring do uruchamiania zapytań w klastrze Redshift. Wyodrębnienie zmodyfikowanych danych z bazy danych jest dużym zadaniem i można je wykonać za pomocą funkcji podkładu. Korzystanie z funkcji substring może pomóc uniknąć modyfikacji danych dotyczących zapytania, ponieważ otrzymuje zmodyfikowane dane.