SQLite Funkcje ciągów: ZAMIEŃ, SUBSTR, PRZYTNIJ, ZAOKR

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 trybie przepływowym:

Krok 1) W tym etapie,

  1. Otwórz Mój komputer i przejdź do następującego katalogu „C:\sqlite" i wtedy
  2. otwarty "Plik sqlite3.exe"

SQLite Funkcje łańcuchowe

Krok 2) Otwórz bazę danych „PoradnikiPrzykładDB.db” za pomocą następującego polecenia:

SQLite Funkcje łańcuchowe

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:

Znajdowanie DŁUGOŚCI ciągu w SQLite

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:

Przykład funkcji UPPER i LOWER w SQLite

Wynik jest następujący:

  • UPPER('ciąg znaków') zwraca ciąg znaków „sznurek” pisane wielką literą „STRING".
  • LOWER('ŁAŃCUCH') zwraca ciąg znaków „STRING”w reprezentacji małymi literami”sznurek".
  • 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ę stringów, zaczynając od określonej pozycji. Możesz przekazać do funkcji trzy operandy, tak jak tutaj „PODSTR(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ą, od której należy odjąć ciąg znaków.
  • 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 odejmie ciąg znaków, zaczynając od pozycji Y, wskazując 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:

Przykład funkcji SUBSTR w SQLite

  • SUBSTR(Nazwa Ucznia, 2, 4) podciąg ciągu „Imię ucznia” zaczynając od drugiego znaku i zwróć kolejne 4 znaki.
  • Jednak w funkcji SUBSTR(Nazwa ucznia, 2) nie określiliśmy liczby zwracanych znaków, dlatego SQLite zwrócił wszystkie pozostałe znaki w polu „Imię ucznia” 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” z ciągiem „SQLite"

SELECT REPLACE('xx is very lightweight, xx is easy to learn', 'xx', 'SQLite');

To da ci

Przykład funkcji ZAMIEŃ w SQLite

  • Funkcja zamiany zastąpiła wszystkie ciągi znaków „xx” z ciągiem „SQLite".
  • Więc wynik będzie "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:

Przykład funkcji TRIM w SQLite

  • 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:

Przykład funkcji ABS w SQLite

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:

Przykład funkcji ZAOKR w SQLite

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:

Przykład funkcji TYPEOF w SQLite

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:

Przykład funkcji LAST_INSERT_ROWID w SQLite

  • 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:

Przykład funkcji LAST_INSERT_ROWID w SQLite

  • 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:

Przykład Getta z wersją pliku SQLite biblioteka

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ę przy użyciu 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 „sqlite3_create_function”funkcja. Następnie możesz ponownie wykorzystać je w swojej bazie danych.

Przykład:

W poniższym przykładzie utworzymy funkcję zdefiniowaną przez użytkownika, używając C# język programowania i dodaj go 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ć „Doublewartość” pobiera 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.

Podsumowanie

  • SQLite zapewnia kompleksowy zestaw wbudowanych funkcji, które, jak widzieliśmy, ułatwiają pracę z tabelami i kolumnami bazy danych. Możesz używać tych funkcji z kolumnami, a także wartościami literałów w dowolnym wyrażeniu w zapytaniach SQL.
  • Funkcji długości można także używać z wartościami liczbowymi, aby uzyskać długość wartości liczbowej.
  • UPPER i LOWER zwracają wartości null, jeśli przekażesz im wartość null.
  • Funkcja SUBSTR zwraca określoną liczbę ciągów, zaczynając od określonej pozycji.
  • 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.
  • TRIM usuwa spacje z początku lub z końca łańcucha.
  • Funkcja ABS zwraca wartość bezwzględną wartości numerycznej.
  • Funkcja ROUND(X) konwertuje wartości dziesiętne lub kolumny X tak, aby zawierały wyłącznie liczby całkowite.
  • Funkcja TYPEOF(X) ze swojej nazwy zwraca typ danych wyrażenia X.
  • Funkcja LAST_INSERT_ROWID() zwraca ROW_ID ostatniego wstawionego wiersza w dowolnej tabeli w bazie danych.