SQLite Funkcje łańcuchowe: REPLACE, SUBSTR, TRIM, LENGTH
⚡ Inteligentne podsumowanie
SQLite funkcje łańcuchowe, takie jak LENGTH, SUBSTR, REPLACE i TRIM, manipulują tekstem bezpośrednio w zapytaniach, podczas gdy funkcje pomocnicze numeryczne, takie jak ABS i ROUND, a także funkcje pomocnicze TYPEOF i wersji, rozszerzają to, co SQLite biblioteka wykonuje.

Jak skonfigurować SQLite i uruchom zapytania funkcji łańcuchowych
SQLite jest domyślnie wyposażony w listę wbudowanych funkcji w pliku SQLite biblioteka. Możesz także dodać inne niestandardowe funkcje za pomocą języka C, aby rozszerzyć podstawowe funkcje.
Należy pamiętać, że we wszystkich poniższych przykładach należy uruchomić plik sqlite3.exe i nawiązać połączenie z przykładową bazą danych w następujący sposób:
Krok 1) W tym kroku otwórz Mój komputer i przejdź do następującego katalogu „C:\sqlite”, a następnie otwórz „sqlite3.exe“:
Krok 2) Otwórz bazę danych „TutorialsSampleDB.db” za pomocą następującego polecenia:
Teraz możesz uruchomić dowolny pytanie i wypróbuj wszystkie zapytania użyte w kolejnych sekcjach.
Znajdowanie DŁUGOŚCI ciągu w SQLite
Aby znaleźć długość ciągu, użyj DŁUGOŚCI(X), gdzie X jest wartością ciągu. Jeśli X jest wartością null, funkcja długości zwróci wartość null.
Funkcji długości można także używać z wartościami liczbowymi, aby uzyskać długość wartości liczbowej.
Przykład:
W poniższym przykładzie wypróbujemy składnię funkcji LENGTH z następującymi wartościami:
SELECT LENGTH('A string'), LENGTH(NULL), LENGTH(20), LENGTH(20.5);
To da ci:
Wynik jest następujący:
- DŁUGOŚĆ('Ciąg') zwraca 8, czyli długość łańcucha "Ciąg".
- DŁUGOŚĆ(NULL) zwraca wartość null.
- DŁUGOŚĆ(20) zwraca 2, ponieważ 20 to 2 długości.
- LENGTH(20.5) zwraca 4; Zmiennoprzecinkowa „.” jest liczona jako znak, więc będziesz mieć cztery znaki – 3 znaki, które są długością liczb. Plus jeden dodatkowy znak dla zmiennoprzecinkowej „.”.
Zmiana wielkości liter za pomocą funkcji UPPER i LOWER
UPPER(X) zwróci ten sam ciąg x, ale będzie reprezentował wszystkie znaki ciągu wielkimi literami.
LOWER(X) zwróci ten sam ciąg x, ale będzie reprezentował wszystkie znaki ciągu małymi znakami.
UPPER i LOWER zwracają wartości null, jeśli przekażesz im wartość null.
Jeśli przekażesz wartości numeryczne do UPPER lub LOWER, oba zwrócą dokładną wartość numeryczną.
Przykład:
SELECT UPPER('a string'), LOWER('A STRING'), UPPER(20), LOWER(20), UPPER(NULL), LOWER(NULL);
To da ci:
Wynik jest następujący:
- UPPER('a string') zwraca ciąg „a string” w postaci wielkich liter „A STRING“.
- LOWER('A STRING') zwraca ciąg „A STRING” w postaci małych liter „a string”.
- UPPER(20), LOWER(20) zwracają tę samą liczbę, ponieważ nie mają żadnego wpływu na liczby.
- UPPER(NULL), LOWER(NULL) zwraca wartość null, ponieważ przekazaliśmy im wartość null.
SQLite PODSTR Funkcja
Funkcja SUBSTR zwraca określoną liczbę ciągów znaków, zaczynając od określonej pozycji. Do funkcji można przekazać trzy operandy, na przykład „SUBSTR(X,Y,Z)” w następujący sposób:
- X to literał ciągu lub kolumna ciągu do przeanalizowania. Można przekazać wartość literału (wartość statyczną) lub nazwę kolumny i w tym przypadku wartość zostanie odczytana z wartości kolumny.
- Y jest pozycją początkową do extracdo ciągu od niego zaczynającego się.
- Z to liczba znaków do przeanalizowania, zaczynając od określonej pozycji Y. Ta liczba jest opcjonalna, możesz ją zignorować i w tym przypadku SQLite będzie extract ciąg zaczynający się od pozycji Y wskaż koniec ciągu.
Przykład:
W poniższym zapytaniu użyjemy funkcji SUBSTR, aby pobrać 4 znaki, zaczynając od drugiego znaku z imion uczniów:
SELECT StudentName, SUBSTR(StudentName, 2, 4), SUBSTR(StudentName, 2) FROM Students;
To da ci:
- SUBSTR(StudentName, 2, 4) podciąg „StudentName” zaczynając od drugiego znaku i zwracając następne 4 znaki.
- Jednak w funkcji SUBSTR(StudentName, 2) nie określiliśmy liczby znaków, które mają zostać zwrócone, dlatego SQLite zwrócił wszystkie pozostałe znaki w polu „StudentName” zaczynając od drugiej pozycji.
Zmiana części ciągu za pomocą SQLite Funkcja ZAMIEŃ
Funkcja REPLACE służy do zastąpienia każdego ciągu znaków występującego w innym ciągu ciągiem znaków.
REPLACE(X, Y, Z) – X to literał lub kolumna ciągu wejściowego. Y jest ciągiem, który należy zastąpić ciągiem Z. Należy pamiętać, że zastąpi ono każde wystąpienie ciągu Y przez Z, a nie tylko jedno.
Przykład:
W poniższym zapytaniu zastąpimy wszystkie wystąpienia ciągu „xx” ciągiem „SQLite"
SELECT REPLACE('xx is very lightweight, xx is easy to learn', 'xx', 'SQLite');
To da ci
- Funkcja replace zamieniła wszystkie ciągi „xx” na ciąg „SQLite".
- Tak więc wynik będzie wyglądał następująco:SQLite jest bardzo lekki, SQLite jest łatwy do nauczenia”.
Przycinanie pustych spacji za pomocą SQLite Funkcja TRIM
TRIM usuwa spacje z początku lub z końca łańcucha. Nie usunie żadnych spacji ze środka ciągu, tylko z początku lub z końca.
Przykład:
W poniższym zapytaniu użyjemy funkcji TRIM, aby usunąć spacje z początku i końca ciągu.
Zauważ, że operator konkatenacji „||” jest używany do dodania dodatkowego „;” na końcu ciągu. Aby pokazać, że puste spacje zostały usunięte w czarnym oknie.
SELECT TRIM(' SQLite is easy to learn ') || ';';
To da ci:
Zwróć uwagę, jak puste spacje zostały usunięte z początku i na końcu ciągu znaków i zastąpione przez '; ' na końcu.
Odczytywanie wartości bezwzględnych za pomocą SQLite Funkcja ABS
Funkcja ABS zwraca wartość bezwzględną wartości liczbowej. Wartość bezwzględna to wartość liczbowa bez żadnego znaku dodatniego lub ujemnego. ABS(X) zwraca wartość zależną od wartości X w następujący sposób:
- Wartość bezwzględna X, jeśli X jest wartością liczbową.
- Wartość NULL, jeśli X jest wartością null.
- Wartość „0.0”, jeśli X jest ciągiem znaków.
Przykład:
W poniższym zapytaniu spróbujemy uzyskać wartość bezwzględną ciągu, liczby i wartości null przy użyciu funkcji ABS:
SELECT ABS(-2), ABS(+2), ABS('a string'), ABS(null);
To da ci:
Wyniki przedstawiają się następująco:
- ABS(-2), ABS(+2) zwraca 2, ponieważ 2 jest wartością bezwzględną zarówno dla „-2”, jak i „+2”.
- ABS('ciąg znaków') zwraca „0.0”, ponieważ przekazałeś wartość ciągu, a nie wartość numeryczną.
- ABS(null) zwraca null, ponieważ przekazałeś mu wartość null.
Zaokrąglanie wartości za pomocą funkcji ROUND w SQLite
Liczby dziesiętne to liczby zmiennoprzecinkowe „.”, na przykład „20.5”, „8.65”. Część po lewej stronie liczby zmiennoprzecinkowej nazywana jest częścią całkowitą, a część po prawej stronie liczby zmiennoprzecinkowej nazywana jest częścią dziesiętną.
Liczby całkowite to liczby, na których nie ma żadnej przecinka zmiennoprzecinkowego. Na przykład „20”, „8”.
ROUND(X) konwertuje wartości dziesiętne lub kolumny X wyłącznie na liczby całkowite. Część całkowita, która jest częścią po lewej stronie przecinka dziesiętnego, zostanie zwrócona, a wszystkie cyfry po prawej stronie przecinka dziesiętnego zostaną usunięte.
Przykład:
W poniższym zapytaniu wypróbujemy funkcję ROUND z różnymi opcjami:
SELECT ROUND(12.4354354), ROUND(12.4354354, 2), ROUND(NULL), ROUND('a string');
To da ci:
Wynik jest następujący:
- ZAOKR(12.4354354) – zwraca wartość „12”, ponieważ nie podałeś liczby cyfr. Więc, SQLite usunięto całą część dziesiętną.
- ZAOKR(12.4354354, 2) – zwraca wartość „12.44”, ponieważ podałeś do zaokrąglenia tylko 2 cyfry, czyli dwie cyfry od prawej strony przecinka dziesiętnego.
- ROUND(NULL) – zwraca null, ponieważ przekazałeś mu wartość null.
- ZAOKR('ciąg znaków') – zwraca wartość „0.0”, ponieważ przekazałeś do niej wartość ciągu.
Znajdowanie typu danych wyrażenia za pomocą funkcji TYPEOF
Jeśli chcesz poznać typ kolumny lub wartość literału, możesz w tym celu użyć funkcji TYPEOF.
Funkcja TYPEOF(X) ze swojej nazwy zwraca typ danych wyrażenia X. Zwraca wartość typu string wskazującą typ danych X. Zwraca wartość na podstawie typów danych, czy jest to wartość „NULL”, liczba rzeczywista, tekstowa, całkowita itp.
Przykład:
W poniższym zapytaniu wypróbujemy funkcję TYPEOF z różnymi typami wartości literałowych:
SELECT TYPEOF(null), TYPEOF(12), TYPEOF(12.5), TYPEOF('a string');
To da ci:
Zwrócone wyniki przedstawiają się następująco:
- TYPEOF(null) – zwraca null, ponieważ przekazałeś mu wartość null.
- TYPEOF(12) – zwraca liczbę całkowitą, ponieważ 12 jest liczbą całkowitą.
- TYPEOF(12.5) – zwraca REAL, ponieważ 12.5 jest liczbą rzeczywistą.
- TYPEOF('ciąg znaków') – zwraca tekst, ponieważ „ciąg” jest tekstem.
Znalezienie ostatnio wstawionego rekordu za pomocą SQLite LAST_INSERT_ROWID
SQLite przypisuje klucz całkowity (Id) dla wszystkich wierszy we wszystkich tabelach. Numer ten służy do jednoznacznej identyfikacji tych wierszy.
Kiedy WSTAWIASZ nowy wiersz w tabeli, SQLite przypisze wierszowi unikalną wartość.
Jeśli tabela ma zadeklarowany klucz podstawowy tylko w jednej kolumnie i jest to kolumna typu INTEGER, wówczas wartość tej kolumny zostanie użyta jako wiersz.
Funkcja LAST_INSERT_ROWID() zwraca ROW_ID ostatniego wstawionego wiersza w dowolnej tabeli w bazie danych. Należy zauważyć, że nie przyjmuje ona żadnego operandu.
Przykład:
W poniższym przykładzie uruchomimy funkcję LAST_INSERT_ROWID() w następujący sposób:
SELECT LAST_INSERT_ROWID();
To da ci:
LAST_INSERT_ROWID() zwraca 0, ponieważ w bieżącym połączeniu z bazą danych nie wstawiono żadnych wierszy do żadnej tabeli.
Teraz wstawmy nowego ucznia i ponownie uruchommy funkcję LAST_INSERT_ROWID() po instrukcji wstawiania, w ten sposób:
INSERT INTO Students VALUES(11, 'guru', 1, '1998-10-12'); SELECT LAST_INSERT_ROWID();
To da ci:
Po wstawieniu nowego ucznia o identyfikatorze 11, funkcja LAST_INSERT_ROWID() zwróci identyfikator ostatniego wstawionego wiersza, który wynosi 11.
Uzyskiwanie wersji pliku SQLite biblioteka
Aby uzyskać wersję swojego SQLite biblioteki, należy wywołać funkcję SQLITE_VERSION().
Przykład:
Dowiedzmy się, jaka jest wersja SQLite używamy poprzez uruchomienie następującego polecenia:
SELECT SQLITE_VERSION();
To da ci:
SQLITE_VERSION() zwraca wersję 3.9.2, która jest wersją SQLite Używamy.
Tworzenie funkcji zdefiniowanych przez użytkownika i agregowanie funkcji zdefiniowanych przez użytkownika
Dla niektórych użytkowników SQLite podstawowe funkcje są ograniczone. Być może będą musieli dodać niestandardowe funkcje do swoich niestandardowych potrzeb.
SQLite nie obsługuje tworzenia funkcji zdefiniowanych przez użytkownika. W przeciwieństwie do innych systemów zarządzania bazami danych, nie można w nich tworzyć funkcji zdefiniowanych przez użytkownika SQLite bezpośrednio.
Można jednak utworzyć funkcję, używając języków programowania takich jak C#, C, PHP lub C++ i dołączył tę funkcję do rdzenia SQLite funkcje w SQLite samą bibliotekę, używając funkcji „sqlite3_create_function”. Następnie możesz je ponownie wykorzystać w swojej bazie danych.
Przykład:
W poniższym przykładzie utworzymy funkcję zdefiniowaną przez użytkownika, korzystając z języka programowania C# i dodamy ją do SQLite Funkcje:
[SQLiteFunction(Name = "DoubleValue", Arguments = 1, FuncType = FunctionType.Scalar)] public class DoubleValue: SQLiteFunction { public override object Invoke(object[] args) { return args[0] * 2; } }
Ten fragment kodu jest zapisany w pliku Język programowania C#; tworzy funkcję C# przy użyciu kodu C#.
Nazwa funkcji będzie brzmieć „Double„Wartość” przyjmuje jeden parametr i zwraca jego wartość pomnożoną przez 2.
Zauważ, że C# automatycznie dodaje tę funkcję do SQLite. Wszystko, czego potrzebujesz, to skompilować i uruchomić ten kod. Następnie C# doda tę funkcję o tej samej nazwie do listy SQLite Funkcje. Następnie możesz użyć tej funkcji w SQLite.
W ten sam sposób, używając języków programowania, takich jak C#, C, PHP lub C++można także tworzyć zbiorcze funkcje zdefiniowane przez użytkownika. Które służą do rozszerzania funkcji agregujących w SQLite i używać ich do tworzenia niestandardowych funkcji agregujących.













