Kontynuujemy więc lekcje Pascala dla początkujących. W ostatniej lekcji przyglądaliśmy się , ale tam wspomnieliśmy o znakach, więc zanim dokładnie przestudiujemy typ danych, dowiemy się o typie Char. Typ danych znaku Char— typ danych, którego wartością są pojedyncze znaki. Ten typ może zawierać tylko jeden znak (na przykład: „*”, „/”, „.”, „!” i inne). Każdy taki znak zajmuje 8 bitów pamięci; łącznie jest 256 znaków ośmiobitowych. Wszystkie znaki używane przez typ znaku Char są zapisywane w tabeli znaków ASCII (American Standard Code for Information Interchange).
Stałe znakowe są ujęte w apostrofy, na przykład „.”, „*”, „7”, „s”. Możesz także zapisać stałą znakową, używając symbolu skrótu, na przykład #185 - spowoduje to wyświetlenie znaku o numerze 185 z tabeli ASCII (jest to znak „Nie”).
Istnieje 5 funkcji odnoszących się do typu znaku: Ord, Chr, Pred, Succ i Upcase.
Funkcja Ord konwertuje znak na jego kod numeryczny Tabele ASCII. Na przykład dla znaku „Nie” zwróci wartość 185. Funkcja Chr jest odwrotnością funkcji Ord. Funkcja Chr konwertuje kod numeryczny znaku na sam znak, np. jeśli przyjmiemy kod numeryczny 64, to funkcja Chr (64) zwróci znak „@”.
Przykładowy program w Pascalu wykorzystujący funkcję Ord:
Rozpocznij //Uruchomienie programu
writeln(ord(x)); //Wypisz liczbę w tabeli ASCII
koniec. //Koniec programu
Przykładowy program w Pascalu wykorzystujący funkcję Chr:
Var x:liczba całkowita; // Opis zmiennych (x - typ całkowity)
Rozpocznij //Uruchomienie programu
czytajln(x); //Odczyt zmiennej
writeln(chr(x)); //Wypisz znak według liczby w tabeli ASCII
koniec. //Koniec programu
Funkcja Pred zwraca wartość poprzedniego znaku z tablicy ASCII, przykładowo dla znaku „P” (Pred (P)) funkcja ta zwróci znak „O”. Funkcja Succ jest odwrotnością funkcji Pred. Dla znaku „P” funkcja Succ(P) zwróci znak „Q”, czyli kolejny znak z tabeli ASCII opisanej powyżej.
Przykład programu w Pascalu wykorzystującego funkcje Pred i Succ:
Var x:znak; // Opis zmiennych (x to typ znakowy)
Rozpocznij //Uruchomienie programu
czytajln(x); //Odczyt zmiennej
writeln(pred(x)); //Wypisz poprzedni znak z tabeli ASCII
writeln(succ(x)); //Wypisz następny znak w tabeli ASCII
koniec. //Koniec programu
Funkcja UpCase ma zastosowanie tylko do małych liter angielskich. Ta funkcja konwertuje małe litery angielskie litery wielkimi literami.
Przykładowy program w Pascalu wykorzystujący funkcję UpCase:
Dodatek do lekcji - Tablice znaków ASCII:
Lekcja na dzisiaj dobiegła końca. Pamiętaj o tym programowanie w Pascalu jest prosty i stanowi podstawę wielu języków programowania.
Dim SWord As String SWord = Chr(34) & „Słowo w cudzysłowie” & Chr(34)
Istnieją opcje tej funkcji - ChrB() I ChrW(). Działaj podobnie z tymi samymi opcjami dla funkcji Rosnąco().
Dim sStr As String sStr = "w" If InStr(1, "Hello, World!", sStr, vbTextCompare) > 0 then MsgBox "Wyszukiwane słowo jest obecne!"
Else MsgBox "Brak szukanego słowa!"
Średni |
- możliwość pobrania określonej przez Ciebie liczby znaków z istniejącej zmiennej łańcuchowej odpowiednio po lewej, prawej lub środkowej stronie.
Dim sStr As String sStr = "Witaj, świecie!" |
MsgBox Zamień(sStr, "Witam", "Zatoka" )
- możliwość konwersji ciągu znaków |
(do Unicode i odwrotnie, do wielkich i małych liter, pierwsza litera słowa jest wielka itp.)
Dim sStr As String sStr = "Witaj, świecie!"
vbUnikod:
Konwertuje ciąg na Unicode przy użyciu domyślnej strony kodowej systemu
vbZ Unicode: Konwertuje ciąg Unicode na domyślną stronę kodową systemu* dotyczy lokalizacji Dalekiego Wschodu
Często linie w programie zawierają niepotrzebne białe znaki na końcu lub na początku linii, które należy usunąć, ponieważ Niepotrzebne spacje początkowe lub końcowe w linii mogą powodować problemy z programem.
VBA ma trzy funkcje przeznaczone do usuwania spacji początkowych i końcowych z ciągu: LPrzytnij, RPrzytnij, Przytnij. Należy pamiętać, że te funkcje w rzeczywistości nie modyfikują oryginalnego ciągu, ale raczej zwracają kopię ciągu z usuniętymi dodatkowymi spacjami.
Długość łańcucha z reguły musi być znana przy formatowaniu wiadomości dla użytkownika lub przy formatowaniu danych tekstowych wprowadzanych przez procedurę do procesu roboczego. Arkusz Excela Lub Dokument Worda. VBA używa tej funkcji do tych celów Dim sStr As String sStr = "Witaj, świecie!". W poniższym zestawieniu pomiędzy nawiasami a słowem znajdują się dwie spacje.
Należy zachować ostrożność w przypadku ciągów o stałej długości. Ponieważ ciąg o stałej długości ma zawsze tę samą długość, funkcja Len zawsze zwraca zadeklarowaną długość ciągu, niezależnie od jego rzeczywistej długości. Na przykład, jeśli zmienna łańcuchowa StrokeName o stałej długości, która ma 15 znaków, w rzeczywistości zawiera słowo „słońce”, wówczas funkcja Len (nazwa obrysu) zwróci wynik 15. W tym przypadku, aby dowiedzieć się, jaka jest rzeczywista długość ciągu (w naszym przypadku - 6), musisz użyć następującej kombinacji funkcji: Len(Trim(Nazwa Obrysu)).
VBA ma dwie funkcje, które pomagają porównać ciągi znaków: StrComp, InStr.
Składnia
StrComp(String1, String2[, Porównaj])
String1, String2 - dowolne dwa wyrażenia łańcuchowe, które należy porównać.
Po wykonaniu StrComp zwracana jest jedna z następujących wartości:
Powyższa lista porównuje dwa ciągi w trybie tekstowym: „Ciąg domyślny” i „Ciąg domyślny”. Wynik porównania = 1, tj. „Ciąg domyślny” jest większy niż „Ciąg domyślny”.
Eksperymentuj z różnymi ciągami, aby lepiej zrozumieć, jak działa funkcja StrComp.
Funkcja InStr pozwala określić, czy jeden ciąg zawiera inny ciąg.
Składnia
StrComp(String1, String2[, Porównaj])
String1, String2 - dowolne prawidłowe wyrażenia łańcuchowe. Funkcja sprawdza, czy String1 jest zawarty w String2.
Porównaj to opcjonalny argument, który może być dowolną z następujących predefiniowanych stałych (jeśli zostanie pominięty, użyte zostanie bieżące ustawienie Option Compare):
Start - argument opcjonalny, jest wyrażeniem numerycznym i określa pozycję znaku w String1, od którego powinno rozpocząć się sprawdzanie.
InStr zwraca liczbę wskazującą pozycję znaku w String1, w którym znaleziono String2. Jeśli InStr nie znajdzie String2 w String1, zwracane jest 0. Jeśli String1 (lub String2) ma wartość Null, wówczas funkcja również zwraca Null.
Czasami konieczne jest podzielenie ciągu na części składowe. W VBA trzy funkcje rozwiązują ten problem: Lewo, prawo, środek.
Składnia
Lewy (sznurek, długość)
Funkcja zwraca kopię ciągu, zaczynając od pierwszego znaku i uwzględniając liczbę znaków określoną przez Długość. Jeśli Długość jest liczbą większą niż rzeczywista długość ciągu, zwracane jest całe wyrażenie typu String.
Składnia
Prawa (sznur, długość)
Ciąg to dowolne prawidłowe wyrażenie łańcuchowe.
Długość - dowolna wartość liczbowa.
Funkcja zwraca kopię ciągu, zaczynając od ostatniego znaku i uwzględniając, od prawej do lewej, liczbę znaków określoną przez Długość. Jeśli Długość jest liczbą większą niż rzeczywista długość ciągu, zwracane jest całe wyrażenie typu String. Funkcja Right zawsze kopiuje znaki z końca ciągu na początek.
Składnia
Środek (Ciąg, Początek, [, Długość])
Ciąg to dowolne prawidłowe wyrażenie łańcuchowe.
Długość, Początek - dowolne wartości liczbowe.
Funkcja Mid zwraca kopię ciągu znaków, zaczynając od pozycji znaku w ciągu określonej przez argument Start. Opcjonalny argument Długość określa liczbę znaków do skopiowania z String do Mid. Jeśli Start zawiera większą liczbę niż rzeczywista długość ciągu, zwracany jest pusty ciąg.
Często zdarza się, że trzeba wpisać znak, dla którego nie ma klawisza na klawiaturze (na przykład symbol praw autorskich). Inna sytuacja ma miejsce, gdy zachodzi potrzeba umieszczenia w ciągu znaków znaku usługi VBA (najczęstszym przypadkiem jest użycie podwójnych cudzysłowów).
Aby w ciągu znaków uwzględnić znaki, których nie można wprowadzić z klawiatury lub które mają specjalne znaczenie w języku VBA, należy użyć funkcji Chr.
Składnia
Chr (kod znaku)
Charcode — dowolne wyrażenie numeryczne będące prawidłowym kodem zestawu znaków używanego przez komputer. Musi być liczbą całkowitą z zakresu od 0 do 255.
Funkcja Chr przyjmuje jako argument pojedynczy znak i zwraca ciąg znaków zawierający znak odpowiadający temu kodowi. Ta funkcja jest używana w powyższych zestawieniach do podawania linii podczas wyświetlania komunikatu na ekranie Chr (13).
Ponieważ znaki rozpoczynające nową linię są bardzo ważne podczas formatowania wiadomości i innych danych łańcuchowych manipulowanych przez procedury VBA, istnieje kilka predefiniowanych stałych dla tych znaków, aby uniknąć konieczności używania funkcji Chr:
Aby wyświetlić listę symbol kodu trzeba otworzyć systemu pomocy VBA i na zamówienie „zestawy znaków” zostanie wyświetlona odpowiednia tabela.
Bardzo często z tego czy innego powodu format danych wyjściowych programu nie do końca nam odpowiada. Problem ten rozwiązuje funkcja Format.
Funkcja Format VBA jest identyczna z funkcją Format w programie Excel i używa tych samych symboli zastępczych formatowania danych.
Składnia
Format (wyrażenie [, format [, pierwszy dzień tygodnia [, pierwszy tydzień roku]]])
Wyrażenie - dowolne prawidłowe wyrażenie (wymagany argument).
Format jest prawidłowym wyrażeniem nazwanego lub zdefiniowanego przez użytkownika formatu.
Firstdayofweek to stała określająca pierwszy dzień tygodnia.
Firstweekofyear - stała określająca pierwszy tydzień roku.
Aby skorzystać z funkcji Format, musisz: ustawić predefiniowany format, Lub utwórz obraz o określonym formacie, używając znaków zastępczych.
Nazwany format | Działanie |
Data ogólna | Formatuje informacje o dacie i godzinie w kolejny numer daty, korzystając z ustawień formatu daty i godziny w komputerze. |
Długa randka | Formatuje tylko część zawierającą datę do postaci daty sekwencyjnej, korzystając z ustawień formatu daty długiej komputera. |
Średnia data | Formatuje tylko część daty jako datę sekwencyjną, korzystając z ustawień średniego formatu daty w komputerze. |
Krótka randka | Formatuje tylko część zawierającą datę na datę sekwencyjną, korzystając z ustawień komputera dotyczących formatu daty krótkiej. |
Długo | Formatuje tylko część czasu do postaci kolejnej daty, korzystając z ustawień formatu długiego czasu komputera. |
Średni czas | Formatuje tylko część czasu do daty sekwencyjnej, korzystając z ustawień średniego formatu czasu komputera. |
Krótki czas | Formatuje tylko część czasu w datę sekwencyjną, korzystając z ustawień komputera dotyczących formatu krótkiego czasu. |
Numer ogólny | Formatuje liczbę na ciąg znaków bez żadnych znaków specjalnych. |
Waluta | Formatuje liczbę z symbolem waluty, separatorem tysięcy i tylko dwoma miejscami po przecinku. |
Naprawił | Formatuje liczbę w taki sposób, że przed przecinkiem dziesiętnym zawsze znajduje się co najmniej jedna cyfra, a po nim co najmniej dwie cyfry. |
Standard | Formatuje liczbę z separatorem tysięcy w taki sposób, aby przed separatorem dziesiętnym znajdowała się co najmniej jedna cyfra, a po nim co najmniej dwie cyfry. |
Procent | Formatuje liczbę jako wartość procentową, mnożąc ją przez 100 i dodając symbol procentu. |
Naukowy | Formatuje liczbę do zwykłego formatu wykładniczego. |
Tak/Nie | Jeśli sformatowana liczba jest różna od zera, zwracany jest ciąg „Tak” lub „Nie”. |
Prawda/Fałsz | Jeśli sformatowana liczba jest różna od zera, zwracany jest ciąg „True”, w przeciwnym razie – „False”. |
Wł./Wył | Jeśli sformatowana liczba jest różna od zera, zwracany jest ciąg „On” lub „Off”. |
Znak zastępczy | Akcja (na przykładzie numeru 1234.45) |
0 | Znak numeryczny wyświetlający cyfrę, jeśli znajduje się ona na tej pozycji, lub 0, jeśli jej nie ma. Symbolu 0 można używać do wyświetlania zer wiodących w przypadku liczb całkowitych i zer końcowych w przypadku miejsc dziesiętnych: 00000.000 wyświetla 01234.450 |
# | Symbol numeryczny wyświetla cyfrę, jeśli znajduje się ona na tej pozycji, w przeciwnym razie nie wyświetla niczego. Znak wypełniający # jest równoważny 0, z tą różnicą, że zera początkowe i końcowe nie są wyświetlane: #####.### wyświetla 1234,45 |
$ | Wyświetla znak dolara: $###,###.00 wyświetla 1234,45 USD |
. | Dziesiętny znak zastępczy, wyświetla przecinek dziesiętny w wyznaczonej pozycji w ciągu znaków zastępczych 0: #.##.## wyświetla 1234,45 |
% | Symbol procentu, mnoży wartość przez 100 i dodaje znak procentu w miejscu wskazanym przez symbole zastępcze. 0:#.#0.00% wyświetla liczbę 0.12345 jako 12,35% (następuje zaokrąglenie) |
, | Separator tysięcy, dodaje przecinki jako separatory tysięcy w ciągach zastępczych 0 i #: ###,###,###.00 wyświetla 1234,45 |
E-e- | Wyświetla wartość w formacie wykładniczym z wykładnikiem tylko dla wartości ujemnych: #.####E-00 wyświetla 1.23445E03 |
E+ e+ | Wyświetla wartość w formacie wykładniczym z wykładnikiem zarówno dla wartości ujemnych, jak i dodatnich: #.####E+00 wyświetla 1.23445E+03 |
/ | Oddziela dzień, miesiąc i rok w celu formatowania wartości dat. |
M | Określa sposób wyświetlania miesięcy w datach: m wyświetla 1, mm - 01, mmm - styczeń, mmmm - styczeń |
D | Określa sposób wyświetlania dni w datach: d wyświetla 1, dd - 01, ddd - niedziela, dddd - niedziela |
y | Wyświetla dzień roku jako liczbę od 1 do 366 |
yy | Określa sposób wyświetlania lat w datach: rr - 66, yyyy - 1966 |
Q | Wyświetla kwartał roku jako liczbę od 1 do 4 |
w | Wyświetla dzień tygodnia jako liczbę (1 - niedziela) |
www | Wyświetla tydzień roku jako liczbę od 1 do 54 |
: | Oddziela godziny, minuty i sekundy w wartościach formatu czasu: gg:mm:ss - 01:01:01, h:m:s - 1:1:1 |
H | Określa sposób wyświetlania godzin: gg - 01, h - 1 |
M | Określa sposób wyświetlania minut: mm - 01, m - 1 |
S | Określa sposób wyświetlania sekund: ss - 01, s - 1 |
AM/PM | Wyświetla czas w formacie 12-godzinnym z dodanym AM lub PM |
@ | Symbol zastępczy znaku wyświetlający spację, jeśli w sformatowanym ciągu nie ma pasującego znaku. |
Wyświetla wszystkie znaki wielkimi literami. | |
> | Wyświetla wszystkie znaki małymi literami. |
Aby uprościć pracę z ciągami znaków, istnieje szereg wbudowanych funkcji, które znacznie ułatwiają takie operacje, jak konwersja ciągów na dane innego typu, wyszukiwanie podciągu w ciągu, określanie długości ciągu itp. W tym artykule przyjrzymy się najczęstszym funkcjom pracy z ciągami znaków.
1) Funkcja określająca długość łańcucha LENGTH(string), zwraca liczbę znaków w ciągu znaków łącznie ze spacjami na końcu.
WYBIERZ DŁUGOŚĆ („ciąg”) Z PODWÓJNEGO zwróci wartość 7.
2) Funkcje konwersji wielkości liter UPPER(string), LOWER(string), INITCAP(string). Aby zamienić znaki na wielkie litery, użyj funkcji UPPER().
WYBIERZ UPPER('string') FROM DUAL zwróci STRING.
Jeśli zachodzi potrzeba zamiany znaków ciągu na małe litery, należy skorzystać z funkcji LOWER().
SELECT LOWER('STRinG') FROM DUAL zwróci ciąg.
Funkcja INITCAP konwertuje każdy pierwszy znak słowa na wielkie litery, a wszystkie pozostałe znaki na małe litery, pod warunkiem, że znakiem oddzielającym słowa jest spacja.
WYBIERZ INITCAP('string1 string2') Z DUAL zwróci String1 String2.
3) Funkcje przycinania spacji początkowych i końcowych LTRIM(string), RTRIM(string), TRIM(string). Odpowiednio, pierwsza funkcja przycina wszystkie początkowe spacje ciągu, druga – wszystkie spacje końcowe, a trzecia – wszystkie spacje początkowe i końcowe.
WYBIERZ LTRIM('str1') FROM DUAL zwróci ciąg str1,
WYBIERZ RTRIM(‚str2”) Z DUAL zwróci ciąg str2,
WYBIERZ TRIM('str3') FROM DUAL zwróci ciąg str3.
4) Funkcja zamiany części łańcucha na inny ciąg REPLACE(oryginalny ciąg, zastąpiony_podciąg, zastępujący_podciąg). Dla większej przejrzystości spójrzmy na przykład, w którym liczba jest przechowywana w określonym polu tekstowym w tabeli. Ponadto znakiem oddzielającym część całkowitą od ułamkowej w niektórych polach jest „.”, a do dalszego przetwarzania danych potrzebujemy „”, we wszystkich polach. Aby to zrobić, użyjemy funkcji ZAMIEŃ w następujący sposób. REPLACE(pole1, `.', `,') i wszystkie „.” w polu pole zostanie zastąpione symbolem „,”.
WYBIERZ ZAMIEŃ('Mój_ciąg",'_','@') FROM DUAL zwróci ciąg Mój@ciąg.
5) Funkcje konwersji danych na inne typy danych. TO_CHAR(liczba) konwertuje liczbę na tekst. TO_NUMBER(string) konwertuje tekst na liczbę. TO_DATE(string, date_format) konwertuje ciąg znaków na określony format daty.
SELECT TO_CHAR(123) FROM DUAL zwróci wiersz 123,
SELECT TO_NUMBER('12345') FROM DUAL zwróci liczbę 12345,
SELECT TO_DATE('01.01.2010','dd.mon.yyyy') FROM DUAL zwróci datę 01.01.2010.
6) Funkcja określająca występowanie podciągu w ciągu INSTR (łańcuch_źródłowy, podciąg, numer_znaku). Funkcja ta umożliwia określenie numeru znaku w oryginalna linia od którego zaczyna się szukany podciąg (jeśli taki istnieje). W przeciwnym razie zwracane jest 0. Przykładowo musimy określić wszystkie pozycje w tabeli Tabela1, w nazwie której występuje podłańcuch „manager”. Poniższy operator jest do tego całkiem odpowiedni
WYBIERZ * Z TABELI 1, GDZIE INSTR(POST, 'menedżer', 1) > 0.
Oznacza to, że instrukcja SELECT wyświetli tylko te rekordy z tabeli TABELA1, w których znajdzie się szukany podłańcuch „manager”. Ponadto wyszukiwanie zostanie przeprowadzone od pierwszego znaku. Jeżeli wyszukiwanie ma zostać przeprowadzone z innej pozycji, to w trzecim parametrze wskazany jest numer znaku rozpoczynającego wyszukiwanie.
SELECT INSTR('Mały ciąg znaków', 'string', 1) FROM DUAL zwróci wartość 7,
SELECT INSTR('Mały ciąg znaków', 'String', 1) FROM DUAL zwróci wartość 0.
7) Funkcja wyboru podciągu w ciągu źródłowym SUBSTR (ciąg_źródłowy, numer_znaku_początkowego, liczba_znaków). Rozważmy taki przykład: tabela użytkowników przechowuje adres w postaci nazwy miejscowości, nazwy ulicy i numeru domu. Ponadto wiemy na pewno, że na nazwę miejscowości przeznaczono ściśle 20 znaków (jeśli nazwa miejscowości ma mniej niż 20 znaków, to resztę uzupełnia się spacjami), na nazwę ulicy 30 znaków, dla numer domu 3 znaki. Następnie musimy przenieść wszystkie adresy z naszej tabeli do drugiej, a jednocześnie wszystkie 3 składniki adresu muszą znajdować się w różnych polach. Aby wybrać składniki adresu, użyj funkcji SUBSTR().
WYBIERZ SUBSTR(TABELA_1.ADRES, 1, 20) MIASTO, SUBSTR(TABELA_1.ADRES, 21, 30) ULICA, PODSTR(TABELA_1.ADRES, 52, 3) MIASTO Z TABELI_1
Oczywiście do przesłania danych trzeba użyć operatora INSERT, ale żeby zrozumieć działanie funkcji SUBSTR, omawiany przykład jest całkiem odpowiedni.
SELECT SUBSTR('Mój_ciąg', 4, 3) FROM DUAL zwróci ciąg znaków.
Funkcje omówione powyżej można wykorzystać w parametrach wejściowych. Jeśli więc mamy wybrać wszystkie znaki po konkretnym, to możemy przekazać numer szukanego znaku z funkcji INSTR do funkcji SUBSTR. Na przykład, jeśli chcesz przenieść wszystkie znaki z pola tabeli znajdujące się po „,”, możesz użyć tej konstrukcji
WYBIERZ SUBSTR(Mój_ciąg, INSTR(Mój_ciąg, ',', 1), DŁUGOŚĆ(Mój_ciąg)- INSTR(Mój_ciąg, ',', 1)+1) Z DUAL.
Aby określić znak początkowy, wywołujemy funkcję INSTR(), która zwróci numer znaku pierwszego wystąpienia podciągów „,”. Następnie definiujemy liczbę znaków na końcu łańcucha jako różnicę między długością ciągu a numerem pierwszego wystąpienia podciągu.
8) Aby określić kod znaku, należy skorzystać z funkcji ASCII(string), która zwraca kod 1 znaku ciągu. Na przykład
WYBIERZ ASCII(W) Z PODWÓJNEGO zwróci wartość 87.
9) Funkcja odwrotna do konwersji kodu znaku na znak CHR (liczba).
SELECT CHR(87) FROM DUAL zwróci znak W.
Oracle DBMS posiada szereg funkcji do pracy z liczbami. Należą do nich funkcje podnoszące liczbę do potęgi POTĘGA(), zaokrąglanie OKRĄG() itp.
1) Funkcja ABS(liczba) zwraca wartość bezwzględną argumentu.
WYBIERZ ABS(-3) Z DUAL zwróci wartość 3.
2) Funkcja CEIL(liczba) zwraca najmniejszą liczbę całkowitą większą lub równą przekazanemu parametrowi.
SELECT CEIL(4.5) FROM DUAL zwróci wartość 5.
3) Funkcja FLOOR(liczba) zwraca największą liczbę całkowitą mniejszą lub równą przekazanemu parametrowi.
WYBIERZ PIĘTRO(3.8) Z PODWÓJNEGO zwróci wartość 3.
4) Funkcja MOD(liczba_1, liczba_2) zwraca resztę z dzielenia pierwszego parametru przez drugi.
SELECT MOD(5, 3) FROM DUAL zwróci wartość 2. Uwaga. Jeśli drugi parametr ma wartość 0, funkcja zwraca pierwszy parametr.
5) Funkcja zaokrąglania ROUND(liczba_1, liczba_2). Zaokrągla pierwszy przekazany parametr do liczby cyfr przekazanych w drugim parametrze. Jeśli drugi parametr nie zostanie określony, przyjmuje się, że jest on równy 0, to znaczy zaokrąglanie odbywa się do wartości całkowitej. Przykłady
SELECT ROUND(101.34) FROM DUAL zwróci wartość 101,
WYBIERZ ROUND(100.1268, 2) FROM DUAL zwróci wartość 100.13
SELECT ROUND(1234000.3254, -2) FROM DUAL zwróci wartość 1234000,
WYBIERZ RUNĘ (-100,122, 2) Z PODWÓJNEGO zwróci -100,12.
6) Funkcja obcinania wartości TRUNC(liczba_1, liczba_2). Zwraca wartość pierwszego parametru obciętą do liczby miejsc dziesiętnych określonej w drugim parametrze. Przykłady
WYBIERZ TRUNC(150,58) FROM DUAL zwróci wartość 150
WYBIERZ TRUNC(235,4587, 2) Z DUAL zwróci 235,45
WYBIERZ TRUNC(101.23, -1) FROM DUAL zwróci wartość 100
7) Oracle DBMS posiada szereg funkcji trygonometrycznych SIN(liczba), COS(liczba), TAN(liczba) i ich odwrotności ACOS(liczba), ASIN(liczba), ATAN(liczba). Zwracają wartość funkcji trygonometrycznej odpowiadającej nazwie. W przypadku funkcji bezpośrednich parametrem jest wartość kąta w radianach, a w przypadku funkcji odwrotnych – wartość funkcji. Przykłady
WYBIERZ COS(0,5) Z DUAL zwróci wartość 0,877582561890373
WYBIERZ SIN(0,5) Z DUAL zwróci wartość 0,479425538604203
WYBIERZ TAN(0,5) Z DUAL zwróci wartość 0,546302489843791
WYBIERZ ACOS(0.5) Z DUAL zwróci wartość 1.0471975511966
WYBIERZ ASIN(0,5) FROM DUAL zwróci wartość 0,523598775598299
WYBIERZ ATAN(0.5) FROM DUAL zwróci wartość 0.463647609000806
8) Funkcje hiperboliczne. SINH(liczba),
COSH(liczba), TANH(liczba). SINH() zwraca sinus hiperboliczny przekazanego parametru, COSH() zwraca cosinus hiperboliczny przekazanego parametru, TANH() zwraca tangens hiperboliczny przekazanego parametru. Przykłady
WYBIERZ COSH(0.5) FROM DUAL zwróci wartość 1.12762596520638
SELECT SINH(0.5) FROM DUAL zwróci wartość 0.521095305493747 SELECT TANH(0.5) FROM DUAL zwróci wartość 0.46211715726001
9) Funkcja potęgowania MOC(liczba_1, liczba_2). Przykłady
SELECT POWER(10, 2) FROM DUAL zwróci wartość 100
WYBIERZ MOC(100, -2) Z PODWÓJNEGO zwróci wartość 0,0001
10) Funkcje logarytmiczne. LN(liczba) zwraca logarytm naturalny przekazanego parametru, LOG(liczba_1, liczba_2) zwraca logarytm drugiego parametru przekazanego do podstawy przekazanej do pierwszego parametru. Ponadto pierwszy parametr musi być większy od zera i różny od 1. Przykłady
WYBIERZ LN(5) Z PODWÓJNEGO zwróci wartość 1,6094379124341
WYBIERZ LOG(10, 3) Z DUAL zwróci wartość 0,477121254719662
11) Funkcja wysuwania pierwiastek kwadratowy KWRT(liczba). Przykład
WYBIERZ SQRT(4) Z PODWÓJNEGO zwróci wartość 2.
12) Funkcja podnosząca liczbę e do potęgi EXP(liczba). Przykład
SELECT EXP(2) FROM DUAL zwróci wartość 7,38905609893065.
W praktyce bardzo często konieczna jest analiza danych w postaci dat, wykonanie na nich pewnych operacji i zmiana formatu. Wszystkie te operacje są już zaimplementowane jako funkcje wbudowane. Przyjrzyjmy się najbardziej podstawowym z nich.
1) ADD_MONTHS(data, liczba_miesięcy) zwraca datę oddzieloną od daty podanej w pierwszym parametrze o liczbę miesięcy podaną w drugim parametrze. Przykłady
SELECT ADD_MONTHS('01-JAN-2010', 2) FROM DUAL zwróci datę '03.01.2010'
SELECT ADD_MONTHS('01-JAN-2010', -3) FROM DUAL zwróci datę '01.10.2009'
SELECT ADD_MONTHS('30-JAN-2010', 1) FROM DUAL zwróci datę '02/28/2010'
2) Aby określić aktualna data i czas, stosowana jest funkcja SYSDATE. Zakres zastosowania tej funkcji jest znacznie szerszy, niż mogłoby się wydawać na pierwszy rzut oka. Przede wszystkim jest to kontrola nad wprowadzaniem danych do bazy. Wiele tabel posiada osobne pole do przechowywania daty ostatniej modyfikacji. Bardzo wygodne jest także kontrolowanie niektórych parametrów wejściowych raportów, zwłaszcza jeśli nie powinny one być większe niż bieżąca data. Oprócz daty tę funkcję Zwraca również czas z dokładnością do sekund. Przykład
WYBIERZ SYSDATE Z DUAL zwróci datę „22.05.2010 14:51:20”
3) Jeśli chcesz określić ostatni dzień miesiąca, to funkcja LAST_DAY(data) jest do tego całkiem odpowiednia. Można go wykorzystać do określenia liczby pozostałych dni w miesiącu.
WYBIERZ LAST_DAY(SYSDATE) – SYSDATE Z DUAL.
W wyniku egzekucji tego operatora Wyświetlona zostanie liczba dni od aktualnej daty do końca miesiąca. Przykład
WYBIERZ LAST_DAY('15-LUT-2010') FROM DUAL zwróci datę '02/28/2010'.
4) Funkcja określająca liczbę miesięcy pomiędzy datami MONTHS_BETWEEN(data_1, data_2). Przykłady
WYBIERZ MIESIĄCE_BETWEEN('01-LIP-2009', '01-STYCZEŃ-2010') Z DUAL zwróci -6
WYBIERZ MIESIĄCE_BETWEEN('01-LIP-2009', '10-STYCZEŃ-2010') Z PODWÓJNEGO zwróci -6,29032258064516.
Notatka. Jeżeli dni miesięcy są takie same, funkcja zwraca liczbę całkowitą, w przeciwnym razie wynik będzie ułamkowy, a liczba dni w miesiącu wyniesie 31.
5) Funkcja NEXT_DAY(data, dzień_tygodnia) pozwala na wyznaczenie kolejnej daty z daty podanej w pierwszym parametrze, która odpowiada dniu tygodnia podanemu w drugim parametrze. Przykład
WYBIERZ NASTĘPNY DZIEŃ('01-LIP-2009', 'pon') FROM DUAL zwróci datę '07.06.2009', czyli następny poniedziałek po 1 lipca 2009 przypadający na 6-ty.
6) Zaokrąglanie daty ROUND(data, format). Drugi parametr jest opcjonalny; jeżeli nie zostanie określony, przyjmuje się go jako „DD”, co oznacza, że zaokrąglenie zostanie wykonane do najbliższego dnia. Przykłady
SELECT ROUND(SYSDATE) FROM DUAL zwróci datę „23.05.2010”
SELECT ROUND(SYSDATA, MIESIĄC) FROM DUAL zwróci datę „01.06.2010”, zaokrągloną do najbliższego pierwszego dnia miesiąca.
7) Obcięcie daty. Funkcja TRUNC(data, format). Podobnie jak ten omówiony powyżej, może nie posiadać drugiego parametru. W takim przypadku obcięcie zostanie przeprowadzone do następnego dnia. Przykłady
WYBIERZ TRUNC(SYSDATE) Z DUAL zwróci datę „22.05.2010”
SELECT TRUNC(SYSDATE, „WW”) Z DUAL zwróci datę „01.05.2010”
WYBIERZ TRUNC(SYSDATE, „Dzień”) Z DUAL zwróci datę „16.05.2010”.
Ta sekcja poświęcona jest rozważaniom dotyczącym konwersji danych do różnych formatów. W praktyce dość często zdarzają się sytuacje, gdy konieczne jest traktowanie wartości ciągów jako liczb i odwrotnie. Pomimo niewielkiej liczby funkcji, ich możliwości są w zupełności wystarczające do rozwiązywania bardzo złożonych problemów aplikacyjnych.
1) TO_CHAR(dane, format). Na pierwszy rzut oka składnia jest dość prosta, jednak dzięki drugiemu parametrowi można bardzo dokładnie opisać, na jaki format dane mają zostać przekonwertowane. Można więc przekonwertować zarówno datę, jak i wartość liczbową na ciąg znaków. Rozważ opcję konwersji daty na ciąg znaków. Wartości najpopularniejszych formatów podano w tabeli, pełniejsze informacje znajdują się w dokumentacji technicznej.
Tabela wartości formatu do konwersji liczby na ciąg znaków.
SELECT TO_CHAR(SYSDATE, 'D-MONTH-RR') FROM DUAL zwróci ciąg '7-MAJ -10'
SELECT TO_CHAR(SYSDATE, 'DDD-MM-RRRR') FROM DUAL zwróci ciąg '142-05-2010'
SELECT TO_CHAR(SYSDATE, 'Q-D-MM-RRRR') FROM DUAL zwróci ciąg '2-7-05-010'
WYBIERZ TO_CHAR(1050, '9.99EEEE) FROM DUAL zwróci ciąg '1.050E+03'
WYBIERZ TO_CHAR(1400, '9999V999') FROM DUAL zwróci ciąg '1400000'
SELECT TO_CHAR(48, 'RM') FROM DUAL zwróci ciąg 'XLVIII'
2) Funkcja konwertująca ciąg znaków na datę TO_DATE(string, format). Możliwe wartości formaty zostały już omówione powyżej, dlatego podam kilka przykładów wykorzystania tej funkcji. Przykłady
SELECT TO_DATE('01.01.2010', 'DD.MM.RRRR') FROM DUAL zwróci datę '01.01.2010'
SELECT TO_DATE('01.JAN.2010', 'DD.MON.RRRR') FROM DUAL zwróci datę '01.01.2009'
SELECT TO_DATE('15-01-10', 'DD-MM-RR') FROM DUAL zwróci datę '15.01.2010'.
3) Funkcja konwertująca ciąg znaków na wartość liczbową TO_NUMBER(string, format). Najpopularniejsze wartości formatów zostały wymienione w tabeli, dlatego przyjrzyjmy się zastosowaniu tej funkcji na przykładach. Przykłady
SELECT TO_NUMBER('100') FROM DUAL zwróci liczbę 100
WYBIERZ TO_NUMBER('0010.01', '9999D99') FROM DUAL zwróci liczbę 10.01
WYBIERZ DO_NUMBER("500 000","999G999") FROM DUAL zwróci liczbę 500000.
W tym artykule przeanalizujemy pracę z ciągami znaków w VBA na przykładach funkcji InStr, LCASE, UCase, Left, Right, Mid, LTrim, RTrim, Trim, Len, Zamień, Space, StrComp, String, StrReverse.
Ciągi znaków to sekwencja znaków, która może składać się z liter, cyfr, znaki specjalne lub ze wszystkich. Zmienna nazywana jest ciągiem znaków, jeśli jest ujęta w podwójne cudzysłowy "".
Istnieją predefiniowane funkcje VBA String, które pomagają programistom wydajnie pracować z ciągami. Poniżej znajdują się metody String obsługiwane w VBA. Kliknij każdą metodę, aby poznać szczegóły.
Funkcja InStr zwraca pierwsze wystąpienie jednego ciągu w innym ciągu. Wyszukiwanie odbywa się od lewej do prawej.
Private Sub Constant_demo_Click() Dim Var As Variant Var = "Microsoft VBScript" MsgBox („Linia 1: „ & InStr(1, Var, „s”)) MsgBox („Linia 2: „ & InStr(7, Var, „s) " ")) MsgBox („Linia 3: „ & InStr(1, Var, „f”, 1)) MsgBox („Linia 4: „ & InStr(1, Var, „t”, 0)) MsgBox („Linia 5 : " & InStr(1, Var, "i")) MsgBox („Linia 6: " & InStr(7, Var, "i")) MsgBox („Linia 7: " & InStr(Var, "VB") ) Zakończ sub
Linia 1:6
Linia 2: 0
Linia 3:8
Linia 4:9
Linia 5:2
Linia 6: 16
Linia 7: 11
Zwraca pierwsze wystąpienie określonego podciągu. Wyszukiwanie odbywa się od lewej do prawej.
InStrRev
Funkcja InStrRev zwraca pierwsze wystąpienie jednego ciągu w innym ciągu. Wyszukiwanie odbywa się od prawej do lewej.
Dodaj przycisk i ustaw następującą funkcję.
Private Sub Constant_demo_Click() var = "Microsoft VBScript" msgbox("Linia 1: " & InStrRev(var,"s",10)) msgbox("Linia 2: " & InStrRev(var,"s",7)) msgbox ("Linia 3: " & InStrRev(var",f",-1,1)) msgbox("Linia 4: " & InStrRev(var",t",5)) msgbox("Linia 5: " & InStrRev( var,"i",7)) msgbox("Linia 6: " & InStrRev(var,"i",7)) msgbox("Linia 7: " & InStrRev(var,"VB",1)) End Sub
Po wykonaniu powyższego skryptu generuje następujące dane wyjściowe.
Linia 1:6
Linia 2: 6
Linia 3:8
Linia 4:0
Linia 5:2
Linia 6:2
Linia 7:0
Zwraca pierwsze wystąpienie określonego podciągu. Wyszukiwanie odbywa się od prawej do lewej.
Funkcja LCase zwraca ciąg znaków po konwersji ciągu wejściowego na małe litery.
Private Sub Constant_demo_Click() var = "Microsoft VBScript" msgbox("Linia 1: " & LCase(var)) var = "MS VBSCRIPT" msgbox("Linia 2: " & LCase(var)) var = "microsoft" msgbox( „Wiersz 3: „ & LCase(var)) End Sub
Linia 1: Microsoft vbscript
Linia 2: ms vbscript
Linia 3: Microsoft
Zwraca małe litery określonego ciągu.
Funkcja UCase zwraca ciąg znaków po konwersji ciągu wejściowego na DUŻE litery.
Dodaj przycisk i umieść w nim następującą funkcję.
Private Sub Constant_demo_Click() var = "Microsoft VBScript" msgbox("Linia 1: " & UCase(var)) var = "MS VBSCRIPT" msgbox("Linia 2: " & UCase(var)) var = "microsoft" msgbox( „Wiersz 3: „ & UCase(var)) End Sub
Po wykonaniu powyższego skryptu generuje następujące dane wyjściowe.
Wiersz 1: MICROSOFT VBSCRIPT
Wiersz 2: MS VBSCRIPT
Linia 3: MICROSOFT
Zwraca wielkie litery określonego ciągu.
Funkcja Left zwraca określoną liczbę znaków z lewej strony danego ciągu wejściowego.
Dodaj przycisk i dodaj następującą funkcję.
Private Sub Constant_demo_Click() Dim var jako wariant var = "Microsoft VBScript" msgbox("Linia 1: " & Left(var,2)) var = "MS VBSCRIPT" msgbox("Linia 2: " & Left(var,5) ) var = "microsoft" msgbox("Linia 3: " & Left(var,9)) End Sub
Gdy wykonasz powyższą funkcję, wyświetli się następujący wynik.
Linia 1: Mi
Linia 2: MS VB
Linia 3: Microsoft
Zwraca określoną liczbę znaków z lewej strony ciągu.
Funkcja Right zwraca określoną liczbę znaków z prawej strony danego ciągu wejściowego.
Dodaj przycisk i dodaj następującą funkcję.
Private Sub Constant_demo_Click() var = "Microsoft VBScript" msgbox("Linia 1: " & Right(var,2)) var = "MS VBSCRIPT" msgbox("Linia 2: " & Right(var,5)) var = " microsoft" msgbox("Wiersz 3: " & Right(var,9)) End Sub
Gdy wykonasz powyższą funkcję, wyświetli się następujący wynik.
Linia 1: pkt
Linia 2: CRIPT
Linia 3: Microsoft
Zwraca określoną liczbę znaków z prawej strony ciągu.
Funkcja Mid zwraca określoną liczbę znaków z danego ciągu wejściowego.
Dodaj przycisk i dodaj następującą funkcję.
Private Sub Constant_demo_Click() Dim var as Variant var = "Microsoft VBScript" msgbox("Linia 1: " & Mid(var,2)) msgbox("Linia 2: " & Mid(var,2,5)) msgbox(" Wiersz 3: „ & Mid(var,5,7)) End Sub
Gdy wykonasz powyższą funkcję, wyświetli się następujący wynik.
Linia 1: icrosoft VBScript
Linia 2: icros
Linia 3:osoft V
Zwraca określoną liczbę znaków z ciągu na podstawie określonych parametrów.
Funkcja Ltrim usuwa spacje z lewej strony ciągu.
Dodaj przycisk i dodaj następującą funkcję.
Private Sub Constant_demo_Click() Dim var as Variant var = " Microsoft VBScript" msgbox "Po Ltrim: " & LTrim(var) End Sub
Gdy wykonasz tę funkcję, wyświetli ona następujący wynik.
Po Ltrim: Microsoft VBScript
Zwraca ciąg znaków po usunięciu spacji z lewej strony określonego ciągu.
Funkcja Rtrim usuwa spacje z prawej strony ciągu.
Dodaj przycisk i dodaj następującą funkcję.
Private Sub Constant_demo_Click() Dim var as Variant var = "Microsoft VBScript " msgbox("Po Rtrim: " & RTrim(var)) End Sub
Gdy wykonasz powyższą funkcję, wyświetli się następujący wynik.
Po Rtrim: Microsoft VBScript
Zwraca ciąg znaków po usunięciu spacji z prawej strony określonego ciągu.
Funkcja Trim usuwa początkowe i końcowe białe znaki z danego ciągu wejściowego.
Dodaj przycisk i dodaj następującą funkcję.
Private Sub Constant_demo_Click() var = "Microsoft VBScript" var = "Microsoft VBScript" msgbox ("Po przycięciu: " & Trim(var)) End Sub
Gdy wykonasz powyższą funkcję, wyświetli się następujący wynik.
Po przycięciu: Microsoft VBScript
Zwraca wartość ciągu po usunięciu spacji wiodących i końcowych.
Funkcja Len zwraca długość podanego ciągu wejściowego łącznie ze spacjami.
Dodaj przycisk i dodaj następującą funkcję.
Private Sub Constant_demo_Click() Dim var1 jako wariant Dim var2 jako wariant var1 ="Microsoft VBScript" msgbox("Długość zmiennej 1 wynosi: " & Len(var1)) var2 = " Microsoft VBScript " msgbox („Długość zmiennej var2 wynosi: " & Len(var2)) Koniec Sub
Gdy wykonasz powyższą funkcję, wyświetli się następujący wynik.
Długość var1 wynosi: 18
Długość var2 wynosi: 36
Zwraca długość podanego ciągu.
Funkcja Zamień zastępuje określoną część ciągu określonym ciągiem określoną liczbę razy.
Private Sub Constant_demo_Click() Dim var as Variant var = "To jest programowanie VBScript" "VBScript zostanie zastąpiony przez MS VBScript msgbox("Linia 1: " & Zamień(var,"VBScript","MS VBScript")) "VB do zostanie zastąpiony przez vb msgbox("Wiersz 2: " & Zamień(var",VB","vb")) ""jest" zastąpiony przez ## msgbox("Wiersz 3: " & Zamień(var,"is"," ##")) ""is" zastąpione przez ## ignoruje znaki przed pierwszym wystąpieniem msgbox("Linia 4: " & Zamień(var,"is","##",5)) ""s" zostaje zastąpione przez ## dla kolejne 2 zdarzenia.
Gdy wykonasz powyższą funkcję, wyświetli się następujący wynik.
msgbox("Linia 5: " & Zamień(var,"s","##",1,2)) ""r" zostaje zastąpione przez ## dla wszystkich porównań tekstowych. msgbox("Linia 6: " & Zamień (var,"r","##",1,-1,1)) ""t" jest zastępowane przez ## dla wszystkich wystąpień Porównanie binarne msgbox("Linia 7: " & Zamień(var,"t", „##”,1,-1,0)) Koniec podst
Linia 1: To jest programowanie MS VBScript
Wiersz 2: To jest programowanie vbScript
Linia 3: Th## ## Programowanie VBScript
Linia 4: ## Programowanie VBScript
Linia 5: Thi## i## Programowanie VBScript
Linia 6: To jest VBSc##ipt P##og##amming
Linia 7: To jest programowanie VBScrip##
Przestrzeń
spacja (liczba)
Liczba - wymagany parametr. Liczba spacji, które chcemy dodać do tego ciągu.
Gdy wykonasz powyższą funkcję, wyświetli się następujący wynik.
Private Sub Constant_demo_Click() Dim var1 jako wariant var1 = „Microsoft” Dim var2 jako wariant var2 = „VBScript” msgbox(var1 & Space(2)& var2) End Sub
Microsoft VBScript
StrComp
Dodaj przycisk i dodaj następującą funkcję.
String2 jest wymaganym parametrem. Drugie wyrażenie ciągu.
Gdy wykonasz powyższą funkcję, wyświetli się następujący wynik.
Private Sub Constant_demo_Click() Dim var1 jako wariant msgbox("Linia 1:" & StrComp("Microsoft","Microsoft")) msgbox("Linia 2:" &StrComp("Microsoft","MICROSOFT")) msgbox("Linia 3:" &StrComp("Microsoft","MiCrOsOfT")) msgbox("Linia 4:" &StrComp("Microsoft","MiCrOsOfT",1)) msgbox("Linia 5:" &StrComp("Microsoft","MiCrOsOfT" ,0)) Koniec pod
Linia 1:0
Linia 2:1
Linia 3:1
Linia 4:0
Linia 5:1
Funkcja String wypełnia ciąg określonym znakiem określoną liczbę razy.
Dodaj przycisk i dodaj następującą funkcję.
Private Sub Constant_demo_Click() msgbox("Linia 1:" & String(3,"$")) msgbox("Linia 2:" & String(4",*")) msgbox("Linia 3:" & String(5,100 )) msgbox("Linia 4:" & String(6,"ABCDE")) End Sub
Gdy wykonasz powyższą funkcję, wyświetli się następujący wynik.